AI写作智能体 自主规划任务,支持联网查询和网页读取,多模态高效创作各类分析报告、商业计划、营销方案、教学内容等。 广告
# serialize与unserialize ## serialize 串行化 > serialize():将对象转化为字符串保存 > unserialize():将字符串反转为对象(对应的类也必须包含) **serialize** -- 产生一个可存储的值的表示;返回字符串,此字符串包含了表示`value`的字节流,可以存储于任何地方 - - - - - - ``` <pre class="calibre10">``` <span class="token">/* 串行化(序列化) */</span> class <span class="token4">Person</span> <span class="token3">{</span> public $name<span class="token3">;</span> public $age<span class="token3">;</span> public $sex<span class="token3">;</span> public $sanwei<span class="token3">;</span> public <span class="token5">function</span> <span class="token4">__construct</span><span class="token3">(</span>$name<span class="token3">,</span> $age<span class="token3">,</span> $sex<span class="token3">,</span> $sanwei<span class="token3">)</span> <span class="token3">{</span> $this<span class="token1">-</span><span class="token1">></span>name <span class="token1">=</span> $name<span class="token3">;</span> $this<span class="token1">-</span><span class="token1">></span>age <span class="token1">=</span> $age<span class="token3">;</span> $this<span class="token1">-</span><span class="token1">></span>sex <span class="token1">=</span> $sex<span class="token3">;</span> $this<span class="token1">-</span><span class="token1">></span>sanwei <span class="token1">=</span> $sanwei<span class="token3">;</span> <span class="token3">}</span> <span class="token3">}</span> <span class="token">// 实例化Person类 </span> $p <span class="token1">=</span> <span class="token5">new</span> <span class="token4">Person</span><span class="token3">(</span><span class="token2">'凤姐'</span><span class="token3">,</span> <span class="token6">20</span><span class="token3">,</span> <span class="token2">'女'</span><span class="token3">,</span> <span class="token2">'100-70-100'</span><span class="token3">)</span><span class="token3">;</span> <span class="token4">var_dump</span><span class="token3">(</span>$p<span class="token3">)</span><span class="token3">;</span> $str <span class="token1">=</span> <span class="token4">serialize</span><span class="token3">(</span>$p<span class="token3">)</span><span class="token3">;</span> <span class="token">// O:6:"Person":3:{s:4:"name";s:6:"凤姐";s:3:"age";i:20;s:3:"sex";s:3:"女";}</span> <span class="token4">file_put_contents</span><span class="token3">(</span><span class="token2">'9.txt'</span><span class="token3">,</span> $str<span class="token3">)</span><span class="token3">;</span> <span class="token">/* O:object 6:类名的字符个数 Person:类名 3:三个属性 s:string 数据类型 i:int 数据类型 */</span> ``` ``` **unserialize($param)** :反串行化 > 反串行话的时候,类必须存在(否则是不完整的类) - - - - - - ``` <pre class="calibre10">``` class <span class="token4">Person</span> <span class="token3">{</span> public $name<span class="token3">;</span> public $age<span class="token3">;</span> public $sex<span class="token3">;</span> public $sanwei<span class="token3">;</span> public <span class="token5">function</span> <span class="token4">__construct</span><span class="token3">(</span>$name<span class="token3">,</span> $age<span class="token3">,</span> $sex<span class="token3">,</span> $sanwei<span class="token3">)</span> <span class="token3">{</span> $this<span class="token1">-</span><span class="token1">></span>name <span class="token1">=</span> $name<span class="token3">;</span> $this<span class="token1">-</span><span class="token1">></span>age <span class="token1">=</span> $age<span class="token3">;</span> $this<span class="token1">-</span><span class="token1">></span>sex <span class="token1">=</span> $sex<span class="token3">;</span> $this<span class="token1">-</span><span class="token1">></span>sanwei <span class="token1">=</span> $sanwei<span class="token3">;</span> <span class="token3">}</span> <span class="token3">}</span> <span class="token">// 1.获取9.txt文本的内容 </span> $str <span class="token1">=</span> file\_get\<span class="token4">_contents</span><span class="token3">(</span><span class="token2">'9.txt'</span><span class="token3">)</span><span class="token3">;</span><span class="token">//O:6:"Person":4:{s:4:"name";s:6:"凤姐";s:3:"age";i:20;s:3:"sex";s:3:"女";s:6:"sanwei";s:10:"100-70-100";}</span> <span class="token">// 2.反串行化 </span> $obj <span class="token1">=</span> <span class="token4">unserialize</span><span class="token3">(</span>$str<span class="token3">)</span><span class="token3">;</span> echo $obj<span class="token1">-</span><span class="token1">></span>name<span class="token3">;</span> echo $obj<span class="token1">-</span><span class="token1">></span>age<span class="token3">;</span> echo $obj<span class="token1">-</span><span class="token1">></span>sex<span class="token3">;</span> ``` ``` 例子2: ``` <pre class="calibre10">``` $intParam <span class="token1">=</span> <span class="token6">123</span><span class="token3">;</span> $stringParam<span class="token1">=</span> <span class="token2">'I love the world'</span><span class="token3">;</span> $arrayParam <span class="token1">=</span> <span class="token4">array</span><span class="token3">(</span> <span class="token2">"fruits"</span> <span class="token1">=</span><span class="token1">></span> <span class="token4">array</span><span class="token3">(</span><span class="token2">"a"</span> <span class="token1">=</span><span class="token1">></span> <span class="token2">"orange"</span><span class="token3">,</span> <span class="token2">"b"</span> <span class="token1">=</span><span class="token1">></span> <span class="token2">"banana"</span><span class="token3">,</span> <span class="token2">"c"</span> <span class="token1">=</span><span class="token1">></span> <span class="token2">"apple"</span><span class="token3">)</span><span class="token3">,</span> <span class="token2">"numbers"</span> <span class="token1">=</span><span class="token1">></span> <span class="token4">array</span><span class="token3">(</span><span class="token6">1</span><span class="token3">,</span> <span class="token6">2</span><span class="token3">,</span> <span class="token6">3</span><span class="token3">,</span> <span class="token6">4</span><span class="token3">,</span> <span class="token6">5</span><span class="token3">,</span> <span class="token6">6</span><span class="token3">)</span><span class="token3">,</span> <span class="token2">"holes"</span> <span class="token1">=</span><span class="token1">></span> <span class="token4">array</span><span class="token3">(</span><span class="token2">"first"</span><span class="token3">,</span> <span class="token6">5</span> <span class="token1">=</span><span class="token1">></span> <span class="token2">"second"</span><span class="token3">,</span> <span class="token2">"third"</span><span class="token3">)</span> <span class="token3">)</span><span class="token3">;</span> class <span class="token4">Object</span> <span class="token3">{</span> public $memu <span class="token1">=</span> <span class="token2">"index"</span><span class="token3">;</span> <span class="token3">}</span> $objectParam <span class="token1">=</span> <span class="token5">new</span> <span class="token4">Object</span><span class="token3">(</span><span class="token3">)</span><span class="token3">;</span> print <span class="token2">'serialize($intParam) 输出的值:'</span><span class="token3">.</span><span class="token4">serialize</span><span class="token3">(</span>$intParam<span class="token3">)</span><span class="token3">;</span> print <span class="token2">'serialize($stringParam) 输出的值:'</span><span class="token3">.</span><span class="token4">serialize</span><span class="token3">(</span>$stringParam<span class="token3">)</span><span class="token3">;</span> print <span class="token2">'serialize($arrayParam) 输出的值:'</span><span class="token3">.</span><span class="token4">serialize</span><span class="token3">(</span>$c<span class="token1">=</span>$arrayParam<span class="token3">)</span><span class="token3">;</span> print <span class="token2">'serialize($objectParam) 输出的值:'</span><span class="token3">.</span><span class="token4">serialize</span><span class="token3">(</span>$d<span class="token1">=</span>$objectParam<span class="token3">)</span><span class="token3">;</span> print <span class="token2">'unserialize(serialize($intParam)) 的结果是:'</span><span class="token3">.</span><span class="token4">unserialize</span><span class="token3">(</span><span class="token4">serialize</span><span class="token3">(</span>$intParam<span class="token3">)</span><span class="token3">)</span><span class="token3">;</span> print <span class="token2">'unserialize(serialize($stringParam)) 的结果是:'</span><span class="token3">.</span><span class="token4">unserialize</span><span class="token3">(</span><span class="token4">serialize</span><span class="token3">(</span>$stringParam<span class="token3">)</span><span class="token3">)</span><span class="token3">;</span> print <span class="token2">'unserialize(serialize($arrayParam)) 的结果是:'</span><span class="token3">.</span><span class="token4">unserialize</span><span class="token3">(</span><span class="token4">serialize</span><span class="token3">(</span>$arrayParam<span class="token3">)</span><span class="token3">)</span><span class="token3">;</span> <span class="token4">var_dump</span><span class="token3">(</span><span class="token4">unserialize</span><span class="token3">(</span><span class="token4">serialize</span><span class="token3">(</span>$arrayParam<span class="token3">)</span><span class="token3">)</span><span class="token3">)</span><span class="token3">;</span> print <span class="token2">'unserialize(serialize($objectParam)) 的结果是:'</span><span class="token3">;</span> <span class="token4">var_dump</span><span class="token3">(</span><span class="token4">unserialize</span><span class="token3">(</span><span class="token4">serialize</span><span class="token3">(</span>$objectParam<span class="token3">)</span><span class="token3">)</span><span class="token3">)</span><span class="token3">;</span> ``` ``` 结果: ``` <pre class="calibre17">``` <span class="token4">serialize</span><span class="token3">(</span>$intParam<span class="token3">)</span> 输出的值<span class="token3">:</span>i<span class="token3">:</span><span class="token6">123</span><span class="token3">;</span> <span class="token4">serialize</span><span class="token3">(</span>$stringParam<span class="token3">)</span> 输出的值<span class="token3">:</span>s<span class="token3">:</span><span class="token6">16</span><span class="token3">:</span><span class="token2">"I love the world"</span><span class="token3">;</span> <span class="token4">serialize</span><span class="token3">(</span>$arrayParam<span class="token3">)</span> 输出的值<span class="token3">:</span>a<span class="token3">:</span><span class="token6">3</span><span class="token3">:</span><span class="token3">{</span>s<span class="token3">:</span><span class="token6">6</span><span class="token3">:</span><span class="token2">"fruits"</span><span class="token3">;</span>a<span class="token3">:</span><span class="token6">3</span><span class="token3">:</span><span class="token3">{</span>s<span class="token3">:</span><span class="token6">1</span><span class="token3">:</span><span class="token2">"a"</span><span class="token3">;</span>s<span class="token3">:</span><span class="token6">6</span><span class="token3">:</span><span class="token2">"orange"</span><span class="token3">;</span>s<span class="token3">:</span><span class="token6">1</span><span class="token3">:</span><span class="token2">"b"</span><span class="token3">;</span>s<span class="token3">:</span><span class="token6">6</span><span class="token3">:</span><span class="token2">"banana"</span><span class="token3">;</span>s<span class="token3">:</span><span class="token6">1</span><span class="token3">:</span><span class="token2">"c"</span><span class="token3">;</span>s<span class="token3">:</span><span class="token6">5</span><span class="token3">:</span><span class="token2">"apple"</span><span class="token3">;</span><span class="token3">}</span>s<span class="token3">:</span><span class="token6">7</span><span class="token3">:</span><span class="token2">"numbers"</span><span class="token3">;</span>a<span class="token3">:</span><span class="token6">6</span><span class="token3">:</span><span class="token3">{</span>i<span class="token3">:</span><span class="token6">0</span><span class="token3">;</span>i<span class="token3">:</span><span class="token6">1</span><span class="token3">;</span>i<span class="token3">:</span><span class="token6">1</span><span class="token3">;</span>i<span class="token3">:</span><span class="token6">2</span><span class="token3">;</span>i<span class="token3">:</span><span class="token6">2</span><span class="token3">;</span>i<span class="token3">:</span><span class="token6">3</span><span class="token3">;</span>i<span class="token3">:</span><span class="token6">3</span><span class="token3">;</span>i<span class="token3">:</span><span class="token6">4</span><span class="token3">;</span>i<span class="token3">:</span><span class="token6">4</span><span class="token3">;</span>i<span class="token3">:</span><span class="token6">5</span><span class="token3">;</span>i<span class="token3">:</span><span class="token6">5</span><span class="token3">;</span>i<span class="token3">:</span><span class="token6">6</span><span class="token3">;</span><span class="token3">}</span>s<span class="token3">:</span><span class="token6">5</span><span class="token3">:</span><span class="token2">"holes"</span><span class="token3">;</span>a<span class="token3">:</span><span class="token6">3</span><span class="token3">:</span><span class="token3">{</span>i<span class="token3">:</span><span class="token6">0</span><span class="token3">;</span>s<span class="token3">:</span><span class="token6">5</span><span class="token3">:</span><span class="token2">"first"</span><span class="token3">;</span>i<span class="token3">:</span><span class="token6">5</span><span class="token3">;</span>s<span class="token3">:</span><span class="token6">6</span><span class="token3">:</span><span class="token2">"second"</span><span class="token3">;</span>i<span class="token3">:</span><span class="token6">6</span><span class="token3">;</span>s<span class="token3">:</span><span class="token6">5</span><span class="token3">:</span><span class="token2">"third"</span><span class="token3">;</span><span class="token3">}</span><span class="token3">}</span> <span class="token4">serialize</span><span class="token3">(</span>$objectParam<span class="token3">)</span> 输出的值<span class="token3">:</span>O<span class="token3">:</span><span class="token6">6</span><span class="token3">:</span><span class="token2">"Object"</span><span class="token3">:</span><span class="token6">1</span><span class="token3">:</span><span class="token3">{</span>s<span class="token3">:</span><span class="token6">4</span><span class="token3">:</span><span class="token2">"memu"</span><span class="token3">;</span>s<span class="token3">:</span><span class="token6">5</span><span class="token3">:</span><span class="token2">"index"</span><span class="token3">;</span><span class="token3">}</span> <span class="token4">unserialize</span><span class="token3">(</span><span class="token4">serialize</span><span class="token3">(</span>$intParam<span class="token3">)</span><span class="token3">)</span> 的结果是<span class="token3">:</span><span class="token6">123</span> <span class="token4">unserialize</span><span class="token3">(</span><span class="token4">serialize</span><span class="token3">(</span>$stringParam<span class="token3">)</span><span class="token3">)</span> 的结果是<span class="token3">:</span>I love the world <span class="token4">unserialize</span><span class="token3">(</span><span class="token4">serialize</span><span class="token3">(</span>$arrayParam<span class="token3">)</span><span class="token3">)</span> 的结果是<span class="token3">:</span><span class="token4">Arrayarray</span><span class="token3">(</span><span class="token6">3</span><span class="token3">)</span> <span class="token3">{</span> <span class="token3">[</span><span class="token2">"fruits"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">array</span><span class="token3">(</span><span class="token6">3</span><span class="token3">)</span> <span class="token3">{</span> <span class="token3">[</span><span class="token2">"a"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">string</span><span class="token3">(</span><span class="token6">6</span><span class="token3">)</span> <span class="token2">"orange"</span> <span class="token3">[</span><span class="token2">"b"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">string</span><span class="token3">(</span><span class="token6">6</span><span class="token3">)</span> <span class="token2">"banana"</span> <span class="token3">[</span><span class="token2">"c"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">string</span><span class="token3">(</span><span class="token6">5</span><span class="token3">)</span> <span class="token2">"apple"</span> <span class="token3">}</span> <span class="token3">[</span><span class="token2">"numbers"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">array</span><span class="token3">(</span><span class="token6">6</span><span class="token3">)</span> <span class="token3">{</span> <span class="token3">[</span><span class="token6">0</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">int</span><span class="token3">(</span><span class="token6">1</span><span class="token3">)</span> <span class="token3">[</span><span class="token6">1</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">int</span><span class="token3">(</span><span class="token6">2</span><span class="token3">)</span> <span class="token3">[</span><span class="token6">2</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">int</span><span class="token3">(</span><span class="token6">3</span><span class="token3">)</span> <span class="token3">[</span><span class="token6">3</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">int</span><span class="token3">(</span><span class="token6">4</span><span class="token3">)</span> <span class="token3">[</span><span class="token6">4</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">int</span><span class="token3">(</span><span class="token6">5</span><span class="token3">)</span> <span class="token3">[</span><span class="token6">5</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">int</span><span class="token3">(</span><span class="token6">6</span><span class="token3">)</span> <span class="token3">}</span> <span class="token3">[</span><span class="token2">"holes"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">array</span><span class="token3">(</span><span class="token6">3</span><span class="token3">)</span> <span class="token3">{</span> <span class="token3">[</span><span class="token6">0</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">string</span><span class="token3">(</span><span class="token6">5</span><span class="token3">)</span> <span class="token2">"first"</span> <span class="token3">[</span><span class="token6">5</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">string</span><span class="token3">(</span><span class="token6">6</span><span class="token3">)</span> <span class="token2">"second"</span> <span class="token3">[</span><span class="token6">6</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">string</span><span class="token3">(</span><span class="token6">5</span><span class="token3">)</span> <span class="token2">"third"</span> <span class="token3">}</span> <span class="token3">}</span> <span class="token4">unserialize</span><span class="token3">(</span><span class="token4">serialize</span><span class="token3">(</span>$objectParam<span class="token3">)</span><span class="token3">)</span> 的结果是<span class="token3">:</span><span class="token4">object</span><span class="token3">(</span>Object<span class="token3">)</span>#<span class="token6">2</span> <span class="token3">(</span><span class="token6">1</span><span class="token3">)</span> <span class="token3">{</span> <span class="token3">[</span><span class="token2">"memu"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">string</span><span class="token3">(</span><span class="token6">5</span><span class="token3">)</span> <span class="token2">"index"</span> <span class="token3">}</span> ``` ```