📜  PHP |序列化数据

📅  最后修改于: 2022-05-13 01:56:20.353000             🧑  作者: Mango

PHP |序列化数据

大多数情况下,我们需要在数据库或PHP文件中存储一个复杂的数组。我们中的一些人可能肯定已经搜索了一些内置函数来完成这项任务。复杂数组是具有多个数据类型或数组元素的数组。
但是,我们已经有了一个方便的解决方案来处理这种情况。我们不必编写自己的函数来将复杂数组转换为格式化字符串。有两种流行的变量序列化方法。

  • 连载()
  • 反序列化()

我们可以使用 serialize()函数序列化PHP中的任何数据。 serialize()函数接受一个参数,该参数是我们要序列化的数据并返回一个序列化的字符串。下面的程序说明了这一点:


输出:

a:4:{i:0;s:5:"hello";i:1;i:42;i:2;a:2:{i:
0;i:1;i:1;s:3:"two";}i:3;s:5:"apple";}

从上面的代码中,我们有一个带有序列化数据的变量$ 字符串 。我们可以使用unserialize()函数对变量的值进行反序列化,以返回复杂数组$myvar的原始值。

下面的程序说明了 serialize() 和 unserialize() 函数:


输出:

Array
(
    [0] => hello
    [1] => 42
    [2] => Array
        (
            [0] => 1
            [1] => two
        )

    [3] => apple
)

这是原生的PHP序列化方法。然而,由于近年来JSON变得如此流行,他们决定在PHP 5.2 中添加对它的支持。现在您可以使用json_encode()json_decode()函数分别在PHP中序列化和反序列化数据。

由于JSON格式仅为文本,因此可以轻松地与服务器发送和接收,并且可以被任何编程语言用作数据格式。

让我们看看如何在PHP中使用json_encode()


输出:

["hello",42,[1,"two"],"apple"]

我们可以使用 json_decode()函数对上面程序中编码的数据进行解码,得到原始的复数数组。下面的程序说明了这一点:


输出:

Array
(
    [0] => hello
    [1] => 42
    [2] => Array
        (
            [0] => 1
            [1] => two
        )

    [3] => apple
)

注意:JSON 编码和解码更紧凑,最重要的是,与 javascript 和许多其他语言兼容。但是,对于复杂的对象,可能会丢失一些信息。