我的问题很基本。
我没有找到任何例子来满足我的需求,究竟serialize()和unserialize()平均在PHP?他们只是给出一个示例- 序列化数组并以无法解释的格式显示输出。很难理解其术语所经过的基本概念。
serialize()
unserialize()
编辑:
<?php $a= array( '1' => 'elem 1', '2'=> 'elem 2', '3'=>' elem 3'); print_r($a); echo ("<br></br>"); $b=serialize($a); print_r($b); ?>
输出:
Array ( [1] => elem 1 [2] => elem 2 [3] => elem 3 ) a:3:{i:1;s:6:"elem 1";i:2;s:6:"elem 2";i:3;s:7:" elem 3";}
我不明白第二个输出。除此之外,有人可以举例说明在使用它之前我需要序列化php数组的情况吗?
一个PHP数组或对象或其他 复杂的数据结构 不能在 运行的PHP脚本 外传输或存储或以其他方式使用。如果要在脚本的一次运行后 仍保留 这种复杂的数据结构,则需要对其进行 序列化 。那只是意味着将结构放入一个“较低的公分母”中,该非母分母可以由PHP以外的其他事物处理,例如数据库,文本文件,套接字。标准的PHP函数serialize只是表达此类内容的 一种格式 ,它将数据结构序列化为PHP独有的字符串表示形式,并且可以使用反转为PHP对象unserialize。但是,还有许多其他格式,例如JSON或XML。
serialize
unserialize
以这个常见问题为例:
PHP和Javascript只能通过字符串进行通信。您可以"foo"很容易地将字符串传递给Javascript。您可以1很容易地将数字传递给Javascript。你也可以传递布尔值true,并false容易为JavaScript。但是如何将这个数组传递给Javascript?
"foo"
1
true
false
Array ( [1] => elem 1 [2] => elem 2 [3] => elem 3 )
答案是 序列化 。对于PHP / Javascript,JSON实际上是更好的序列化格式:
{ 1 : 'elem 1', 2 : 'elem 2', 3 : 'elem 3' }
Javascript可以轻松地将其反转为实际的Javascript数组。
但是,这同样有效地表示了相同的数据结构:
a:3:{i:1;s:6:"elem 1";i:2;s:6:"elem 2";i:3;s:7:" elem 3";}
但是几乎只有PHP使用它,其他任何地方都很少支持这种格式。 这是很常见的,也得到了很好的支持:
<array> <element key='1'>elem 1</element> <element key='2'>elem 2</element> <element key='3'>elem 3</element> </array>
在许多情况下,您需要将 复杂的数据结构 作为字符串传递。序列化将任意数据结构表示为字符串,解决了该问题。