这个和java的序列话是一样的。只是java要实现serializable这个空接口。
serialize() 把变量和它们的值编码成文本形式
unserialize() 恢复原先变量
什么情况下需要序列化 当你想把的内存中的对象写入到硬盘 数据库的时候;当你想在网络上传送对象的时候;
当把这些序列化的数据放在url中在页面之间会传递时,需要对这些数据调用urlencode(),以确保在其中的url元字符进行处理
margic_quotes_gpc和magic_quotes_runtime配置项的设置会影响传递到unserialize()中的数据。如果magic_quotes_gpc项是启用的,那么在url、post变量以及cookies中传递的数据在反序列化之前必须用stripslashes()进行处理:如果magic_quotes_runtime是启用的,那么在向文件中写入序列化的数据之前必须用addslashes()进行处理,而在读取它们之前则必须用stripslashes()进行处理:
也可用array,把一个数组对象系列化。
index = $index; $this->name = $name; } } $data1 = new data(1, hello); $data2 = new data(2, world); $arr = array(); //用arrayobject也可以。 //$arr = new arrayobject(); $arr[0] = $data1; $arr[1] = $data2; $str = serialize($arr); $file = fopen(tmp.txt, w); fwrite($file, $str); fclose($file); //$file =fopen(tmp.txt, r); $data = file_get_contents(tmp.txt); //反序列化得到原来的数组对象。 $obj = unserialize($data); print_r($obj[0]); echo $obj[0]->name; ?>
tmp.txt的内容为:
a:2:{i:0;o:4:data:2:{s:5:index;i:1;s:4:name;s:5:hello;}i:1;o:4:data:2:{s:5:index;i:2;s:4:name;s:5:world;}}
