php - 什么是数据序列化?

标签 php javascript serialization definition

首先,我无法从WikiPedia 中得到明确的定义。甚至来自 serialize PHP 手册中的函数。我需要知道一些我们需要术语序列化的情况以及没有它的情况如何?换句话说,如果您需要序列化,而没有序列化,您的代码将缺少一些重要功能。

最佳答案

什么是序列化?

序列化将对象编码成另一种格式。
例如,您在 PHP 中有一个这样的数组:

$array = array("a" => 1, "b" => 2, "c" => array("a" => 1, "b" => 2));

然后您想将其存储在文件中或发送到其他应用程序。

有多种格式选择,但思路是一样的: 该数组必须被编码(或者您可以说“翻译”)为文本或字节,可以将其写入文件或通过网络发送。
例如,在 PHP 中,如果您:

$data = serialize($array);

你会得到这个:

a:3:{s:1:"a";i:1;s:1:"b";i:2;s:1:"c";a:2:{s:1:"a";i:1;s:1:"b";i:2;}}

这是 PHP 理解的 PHP 特定序列化格式,反之亦然,因此您可以使用它来反序列化对象。
例如,您将一个序列化数组存储在一个文件中,并且您希望它作为一个数组返回到您的代码中:

$array = unserialize($data);

但您可以选择不同的序列化格式,例如 JSON:

$json = json_encode($array);

会给你这个:

{"a":1,"b":2,"c":{"a":1,"b":2}}

结果不仅易于保存、人眼读取或通过网络发送,而且几乎所有其他语言(JavaScript、Java、C#、C++...)都可以理解

结论
序列化将对象转换为另一种格式,以防您想要存储或共享数据。

有没有什么情况,你不能做任何事情,只能序列化它?

没有。但序列化通常会使事情变得更容易。

JSON 和 PHP 格式是唯一可能的格式吗?
不,不,不,再一次不。有很多格式。

  • XML(例如使用 WSDL 或 XHTML 等模式)
  • 字节、Protobuf 等
  • Yaml
  • ...
  • ...
  • 您自己的格式(您可以创建自己的序列化格式并使用它,但大多数时候这是一件大事,不值得这样做)

关于php - 什么是数据序列化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11817950/

相关文章:

php - 帮助从 MySQL 数据库中获取文本到下拉菜单中

php - 如何将文本字段输入自动保存为 utf8 编码数据?

php - 是否可以使用 PHP 对 .ini 文件使用内联注释?

javascript - $cordovaCaptureVideo 持续时间不起作用

javascript - 新的时间戳都是同一个日期

php - 序列化和反序列化 $_POST 数组是否安全?

当值可以是数组或单个项目时,C# DataContractJsonSerializer 失败

php - 了解 PHP 赋值

javascript - jQuery 验证插件 - 如果为空,则允许,否则,检查所需格式

ruby-on-rails - 从 JSON 初始化 Rails 模型 - 如何初始化子关联?