我正在看这个函数:用于PHP的serialize(),我真的不明白它的功能是什么。有人能提供一个简单的输出示例吗?
答案 0 :(得分:14)
基本上,serialize
的目标是将任何(alsmost)类型的数据转换为字符串,因此可以传输,存储,...
一个简单的例子:
$my_array = array(
'a' => 10,
'glop' => array('test', 'blah'),
);
$serialized = serialize($my_array);
echo $serialized;
会得到这个输出:
a:2:{s:1:"a";i:10;s:4:"glop";a:2:{i:0;s:4:"test";i:1;s:4:"blah";}}
然后,您可以unserialize
该字符串,以获取原始数据:
$serialized = 'a:2:{s:1:"a";i:10;s:4:"glop";a:2:{i:0;s:4:"test";i:1;s:4:"blah";}}';
$data = unserialize($serialized);
var_dump($data);
会得到你:
array
'a' => int 10
'glop' =>
array
0 => string 'test' (length=4)
1 => string 'blah' (length=4)
常见用途包括:
请注意,当您只使用PHP 时,使用serialize
非常有用(因为它是一种特定于PHP的格式,它几乎可以处理任何类型的PHP数据,并且确实是快);但是当你必须使用除PHP 之外的东西(因为它是特定于PHP的)时,它并不是那么好。在这些情况下,您可以使用XML,JSON(请参阅json_encode
和json_decode
),...
在PHP手册中,您还可以阅读Object Serialization部分,顺便说一句。
答案 1 :(得分:2)
例如,如果要保存在数据库行中规范化的数组或对象,serialize()
(和unserialize()
)是您的朋友,因为您无法先存放数组或对象把它变成一根绳子。
json_encode()
和json_decode()
类似,但它们编码为JSON。
答案 2 :(得分:0)
请参阅this example,应该非常清楚。