分享

serialize & unserialize

 Be_The_Change 2014-02-12
参考手册上是这么说的:  (PHP 3 >= 3.0.5, PHP 4, PHP 5)  serialize --  产生一个可存储的值的表示 
描述 string serialize ( mixed value )  serialize() 返回字符串,此字符串包含了表示 value 的字节流,可以存储于任何地方。 
 这有利于存储或传递 PHP 的值,同时不丢失其类型和结构。  
想要将已序列化的字符串变回 PHP 的值,可使用 unserialize()。
serialize() 可处理除了 resource 之外的任何类型
甚至可以 serialize() 那些包含了指向其自身引用的数组。
你正 serialize() 的数组/对象中的引用也将被存储。  当序列化对象时,PHP 将试图在序列动作之前调用该对象的成员函数 __sleep()。
这样就允许对象在被序列化之前做任何清除操作。类似的,当使用 unserialize() 恢复对象时, 将调用 __wakeup() 成员函数。 
 注意: 在 PHP 3 中,对象属性将被序列化,但是方法则会丢失。
PHP 4 打破了此限制,可以同时存储属性和方法。请参见类与对象中的序列化对象部分获取更多信息。 
 unserialize (PHP 3 >= 3.0.5, PHP 4, PHP 5)  unserialize --  从已存储的表示中创建 PHP 的值 描述 mixed unserialize ( string str [, string callback] )  unserialize() 对单一的已序列化的变量进行操作,将其转换回 PHP 的值。
返回的是转换之后的值,可为 integer、float、string、array 或 object。如果传递的字符串不可解序列化,则返回 FALSE。
  unserialize_callback_func 指令: 如果在解序列化的时候需要实例化一个未定义类,则可以设置回调函数以供调用(以免得到的是不完整的 object “__PHP_Incomplete_Class”)。可通过 php.ini、ini_set() 或 .htaccess 定义‘unserialize_callback_func’。
每次实例化一个未定义类时它都会被调用。若要禁止这个特性,只需置空此设定。还需要注意的是 unserialize_callback_func 指令是从 PHP 4.2.0 开始提供使用的。  注意: callback 参数是在 PHP 4.2.0 中添加的  若被解序列化的变量是一个对象,在成功地重新构造对象之后,PHP 会自动地试图去调用 __wakeup() 成员函数(如果存在的话)。  
具体用法: 1:$arr = array("测试1","测试2","测试3");//数组
  2:$sarr = serialize($arr);//产生一个可存储的值(用于存储) 
3://用任意方法(例如:你要是吧$sarr存在一个文本文件中你就可以用file_get_contents取得)得到存储的值保存在$newarr中;
  4:$unsarr=unserialize($newarr);//从已存储的表示中创建 PHP 的值

事例代码:
<?php

$arr=array("朱志鹏","wo shi ","man");
$sarr=serialize($arr);
//echo $sarr;
file_put_contents('serialize.txt',$sarr);
$arr1=file_get_contents('serialize.txt');
//echo $arr1;
$usarr=unserialize($arr1);
var_dump($usarr);


?>

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多