PHP串行化(序列化)和反串行化
这个和java的序列话是一样的。只是java要实现Serializable这个空接口。
serialize() 把变量和它们的值编码成文本形式
unserialize()
恢复原先变量
什么情况下需要序列化 当你想把的内存中的对象写入到硬盘 数据库的时候; 当你想在网络上传送对象的时候;
当把这些序列化的数据放在URL中在页面之间会传递时,需要对这些数据调用urlencode(),以确保在其中的URL元字符进行处理
也可用array,把一个数组对象系列化。
<?php class Data{ var $index; var $name; function __construct($index,$name){ $this->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; ?>
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";}}