1.序列化
在 PHP 中,通过 serialize() 序列化函数,可以将对象或数组转换为字符串。
语法格式:
string serialize(对象或数组)
示例
<?phpheader("content-type:text/html;charset=utf-8");$arr=array("userName"=>"张三","sex"=>"男","age"=>15);$str=serialize($arr);echo$str;
代码讲解
1、序列化
$str = serialize($arr);
通过 serialize() 函数,将 $arr 数组转换为一个字符串。
2.反序列化
在 PHP 中,通过 unserialize() 函数,可以将序列化的字符串进行反序列化,并返回原始的对象结构。
语法格式:
mixed unserialize(序列化的字符串)
示例
<?phpheader("content-type:text/html;charset=utf-8");$arr=array("userName"=>"张三","sex"=>"男","age"=>15);$str=serialize($arr);$newArr=unserialize($str);print_r($newArr);
代码讲解
1、反序列化
$newArr = unserialize($str);
通过 unserialize() 函数,将序列化的字符串 $str 转换为原来的数组。
3.老师补充:
3.1序列化案例
序列化原理```php<?phpfunction mySerialize($data){$s = ";";// 用来保存序列化字符串的变量$retS = "";// 获取类型$t = gettype($data);// 根据不同的类型进行不同形式的拼接switch($t){// 整数类型case "integer":$retS .= "i:" . $data;break;// 小数类型case "double":$retS .= "d:" . $data;break;// 布尔类型case "boolean":$v = $data?"1":"0";$retS .= "b:" . $v;break;// 字符串类型case "string":$l = strlen($data);$retS .= "s:{$l}:" . "\"$data\"";break;// 数组类型case "array":$retS .= "a:" . count($data) . ":{";foreach ($data as $key => $value) {$retS .= mySerialize($key);$retS .= mySerialize($value);}$retS .= "}";// 数组后面不拼接分号$s = "";break;}return $retS . $s;}echo mySerialize(100) . "<br>"; //i:100;echo mySerialize(3.14) . "<br>"; //d:3.140000000000000124344978758017532527446746826171875;echo mySerialize(true) . "<br>"; //b:1;echo mySerialize(false) . "<br>"; //b:0;echo mySerialize("hello") . "<br>"; //s:5:"hello";// 序列化复杂数组$animals = ["chicken", "duck", "goose",'dog','pig',100,3.14,true,[1,2,3]];$aniStr = mySerialize($animals);echo $aniStr;echo "<hr>";?>
3.2反序列化```php- 序列化数据```phpi:100;d:3.14;b:1;b:0;s:5:"hello";a:9:{i:0;s:7:"chicken";i:1;s:4:"duck";i:2;s:5:"goose";i:3;s:3:"dog";i:4;s:3:"pig";i:5;i:100;i:6;b:1;i:7;a:3:{i:0;i:1;i:1;i:2;i:2;i:3;}i:8;s:3:"php";}
反序列化
<?php$file = fopen("test.txt","r");do{$content = fgets($file);$data = unserialize($content);var_dump($data);}while($content);fclose($file);echo "<hr>";
```
