PHP序列化和反序列化函数

serialize() 把变量和它们的值编码成文本形式,即产生一个可存储的值的表示

详解::::::::::::::::::::::::::::
serialize() 返回字符串,此字符串包含了表示 value 的字节流,可以存储于任何地方。这有利于存储或传递 PHP 的值,同时不丢失其类型和结构。

unserialize() 恢复原先变量。

详解::::::::::::::::::::::::::::
unserialize() 对单一的已序列化的变量进行操作,将其转换回 PHP 的值。
如果传递的字符串不可解序列化,则返回 FALSE,并产生一个 E_NOTICE。

$arr=array();
$arr['name']='张三';
$arr['age']='22';
$arr['sex']='男';
$arr['phone']='123456789';
$arr['address']='上海市浦东新区';
var_dump($arr);

//输出:
//  array(5) { 
//  ["name"]=> string(6) "张三"
//  ["age"]=> string(2) "22"
//  ["sex"]=> string(3) "男"
//  ["phone"]=> string(9) "123456789"
//  ["address"]=> string(21) "上海市浦东新区"
//   }

//序列化:
$info=serialize($arr);
var_dump($info);

//输出:
//string(140) "a:5:{s:4:"name";s:6:"张三";s:3:"age";s:2:"22";s:3:"sex";s:3:"";s:5:"phone";s:9:"123456789";s:7:"address";s:21:"上海市浦东新区";}"

   说明/
//**a:5标志序列化为array包含5个键值对,s:4标志内容为字符串包含4个字符。**//


$zhangsan=unserialize($info);
var_dump($zhangsan);

//输出:
//  array(5) { 
//  ["name"]=> string(6) "张三"
//  ["age"]=> string(2) "22"
//  ["sex"]=> string(3) "男"
//  ["phone"]=> string(9) "123456789"
//  ["address"]=> string(21) "上海市浦东新区"
//   }

想要将已序列化的字符串变回 PHP 的值,可使用 unserialize()。serialize() 可处理除了 resource 之外的任何类型。甚至可以 serialize() 那些包含了指向其自身引用的数组。你正 serialize() 的数组/对象中的引用也将被存储。

当序列化对象时,PHP 将试图在序列动作之前调用该对象的成员函数 __sleep()。这样就允许对象在被序列化之前做任何清除操作。类似的,当使用 unserialize() 恢复对象时, 将调用 __wakeup() 成员函数。


划重点啦!!!!!!


问:类的属性可以序列化后保存到session中,从而以后可以恢复整个类,这要用到的函数是?

答:序列化函数serialize()

此题详情:http://blog.csdn.net/forlightway/article/details/50707431

想要研究深入点的可以看这个:
PHP序列化与反序列化解读:http://www.freebuf.com/articles/web/90837.html

你可能感兴趣的:(php)