🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ## 概念 `serialize()` 函数将PHP值转为 一个包含字节流的字符串 `unserialize()` 函数将字节流的字符串变回php原来的值 ## 实践 ### PHP数组 ``` <?php $arr = []; $arr['key'] = 'website'; $arr['value'] = 'www.baidu.com'; print_r($arr); ``` 返回数组: ``` Array ( [key] => website [value] => www.baidu.com ) ``` ### serialize() 序列化为字符串 ``` <?php $arr = []; $arr['key'] = 'website'; $arr['value'] = 'www.baidu.com'; $a = serialize($arr); echo $a; ``` 返回数组: ``` a:2:{s:3:"key";s:7:"website";s:5:"value";s:13:"www.baidu.com";} ``` ### unserialize() 反序列化为数组 ``` $b = 'a:2:{s:3:"key";s:7:"website";s:5:"value";s:13:"www.baidu.com";}'; $c = unserialize($b); print_r($c); ``` 返回值 : ``` Array ( [key] => website [value] => www.baidu.com ) ``` ## 对序列化字符串的说明 ``` a:2:{s:3:"key";s:7:"website";s:5:"value";s:13:"www.baidu.com";} ``` 对此我们可以将其分开 ``` a:2:{} s:3:"key" s:7:"website" s:5:"value" s:13:"website" ``` 从上我们可以看出, 1. `a` 代表 `array`数组,`2`代表数组长度,`{}` 很明显就是包含数组的内容 2. `s` 代表 `字符串`,`3`代表字符串的长度,`key`代表字符串 ## 总结 ``` a:2:{} s:3:"key" ``` (字符串用分号隔开) ## 进阶 1、可序列化对象 ![mark](http://qiniu.newthink.cc/blog/20171108-090540289.png) ![mark](http://qiniu.newthink.cc/blog/20171108-090549848.png) 2、可序列化字符串 ![mark](http://qiniu.newthink.cc/blog/20171108-090600801.png) ![mark](http://qiniu.newthink.cc/blog/20171108-090610408.png)