序列化实际上做了什么?

时间:2011-08-03 12:04:23

标签: php

我已经读过序列化生成值的可存储表示但是这意味着什么?

这里的“可存储代表”是什么?

有人可以用一个例子来解释这个吗?

3 个答案:

答案 0 :(得分:13)

它生成变量的字符串表示。

示例:

$var = array(
    'product1' => array('color' => 'red', 'size' => 'L'),
    'product2' => array('color' => 'blue', 'size' => 'M')
);
echo serialize($var);

输出:

a:2:{s:8:"product1";a:2:{s:5:"color";s:3:"red";s:4:"size";s:1:"L";}s:8:"product2";a:2:{s:5:"color";s:4:"blue";s:4:"size";s:1:"M";}}

此字符串可以使用unserialize转回原始多维数组。

答案 1 :(得分:2)

这意味着它可以将对象/引用轻松保存到文件,流式传输等,然后使用相同的数据重建。

假设我有一个名为Person的班级。为了简单起见,我会做伪C#。

class Person {
   string FirstName { get; set; }
   string LastName { get; set; }
}

我有以下Person

var bob = new Person();
bob.FirstName = "Bob";
bob.LastName = "Smith";

然后,如果我将其序列化为XML,我会得到。

<Person>
<FirstName>Bob</FirstName>
<LastName>Smith</LastName>
</Person>

稍后,我可以重新创建一个等同于Person的{​​{1}}实例。

答案 2 :(得分:1)