php 中的序列化函数 serialize(),可以将不能直接存储的数据转换成可以存储的数据,而且不会丢失数据格式。当然php也提供了一个反序列化的函数 unserialize() ,将序列化后的数据再转换为序列化之前的数据以及格式。

php serialize() 序列化函数

serialize():将一些数组或对象不容易存储的数据转换成可以存储的字符串并返回!

语法:

serialize ($value)

参数:$value: 将要被序列化的对象或数组!

示例1:php 序列化一个数组

$arr = array(
    'name' => 'mochu',
    'age'  => '18',
    'Host' => 'http://feiniaomy.com',
    'aihao' => array('编程','画画','PC')
);
$str = serialize($arr);
var_dump($str);

打印结果:

string(152) "a:4:{s:4:"name";s:5:"mochu";s:3:"age";s:2:"18";s:4:"Host";s:20:"http://feiniaomy.com";s:5:"aihao";a:3:{i:0;s:6:"编程";i:1;s:6:"画画";i:2;s:2:"PC";}}"

示例2:php序列化一个对象

class A {
    public $name = 'feiniaomy.com';
    public function echo_name() {
        echo $this->name;
    }
}
$a = new A;
$str = serialize($a);
var_dump($str);

结果:

string(44) "O:1:"A":1:{s:4:"name";s:13:"feiniaomy.com";}"

php unserialize() 反序列化函数

php 中的 unserialize() 函数,可以将已经序列化后的字符串还原成没有序列化之前的数据以及结构!

示例1:php 反序列化对象序列化后的字符串

//这是上面示例中打印的结果,对象参考上面的示例2
$str = 'O:1:"A":1:{s:4:"name";s:13:"feiniaomy.com";}';
$a = unserialize($str);
echo $a->echo_name();
// 输出结果:feiniaomy.com

示例2:php 反序列化数组序列化后的字符串

//这是上面示例1中打印的结果
$str = 'a:4:{s:4:"name";s:5:"mochu";s:3:"age";s:2:"18";s:4:"Host";s:20:"http://feiniaomy.com";s:5:"aihao";a:3:{i:0;s:6:"编程";i:1;s:6:"画画";i:2;s:2:"PC";}}';
$arr = unserialize($str);
var_dump($arr);

打印结果:

array(4) {
  ["name"]=>
  string(5) "mochu"
  ["age"]=>
  string(2) "18"
  ["Host"]=>
  string(20) "http://feiniaomy.com"
  ["aihao"]=>
  array(3) {
    [0]=>
    string(6) "编程"
    [1]=>
    string(6) "画画"
    [2]=>
    string(2) "PC"
  }
}