如何使用 PHP Serialize() 和 Unserialize() 函数

2024 年 8 月 29 日 | 阅读 3 分钟

在 PHP 中,我们无法移动、传输或存储复杂的数据。当我们需要处理一组复杂数据时,我们倾向于使用 serialize()unserialize() 函数。

serialize() 函数会修改复杂的数据结构,将其转换为 PHP 易于传输的兼容格式。这些重构的结构可以使用 unserialize() 函数再次进行反序列化。

serialize() 函数

此 PHP 函数将复杂的数据集转换为字节流表示,该表示可以轻松地存储在 PHP 中。serialize() 用于保存对象元素时,会将所有可用变量转换为对象。

但是,对象内部使用的方法不会被保存在对象中。取而代之的是,只会保留类的名称。一旦将对象声明到结构中,我们就必须反序列化(unserialize())创建的对象。

示例

如果我们创建一个名为 employee 的类然后对其进行序列化,PHP 会将序列化的类转换为一个字符串,该字符串最初会指向 employee 类。它会包含类中的所有变量。

但是,要在其他文件中反序列化创建的 employee 类,必须在第一个文件中存在 employee 类的定义。这可以通过 PHP 中可用的 spl_autoload_register() 函数来实现。

语法

以下是 serialize() 函数的语法,

程序

让我们使用 serialize() 函数编写一个程序,

输出

上面的代码将产生以下输出,

Arraya:4:{ I :0;s:11:"hello world"; I  :1; I :99; I :2;a:2:{ I :0; I :2; I :1;s:4:"four";} I :3;s:4:"pink";}
A:4:{ I :0;s:26:"this is an array employees"; I :1; I :24500000; I  :2;a:3:{ I :0;s:3:"bmw"; I :1;s:5:" Volvo "; I :2;s:4:"audi";} I :3;s:18:"software developer";}

在此程序中,我们创建了两个对象 $myv 和 $myv2,它们具有不同的元素,并使用 serialize() 函数将对象转换为字符串。

unserialize() 函数

此函数的主要目的是将预先序列化的数组反序列化回其先前的复杂结构。

语法

以下是 unserialize() 函数的语法,

程序

让我们使用 unserialize() 函数编写一个代码,

输出

上面的代码将产生以下输出,

Array a : 4:{ I :0;s:11:"hello world"; I  :1; I :99; I :2;a:2:{ I :0; I :2; I :1;s:4:"four";} I :3;s:4:"pink";}
Array
(
    [0] => hello world
    [1] => 99
    [2] => Array
        (
            [0] => 2
            [1] => four
        )

    [3] => pink
)
A:4:{ I :0;s:26:"this is an array employees"; I :1; I :24500000; I  :2;a:3:{ I :0;s:3:"bmw"; I :1;s:5:" Volvo "; I :2;s:4:"audi";} I :3;s:18:"software developer";}
Array
(
    [0] => this is an array employees
    [1] => 24500000
    [2] => Array
        (
            [0] =>bmw
            [1] => Volvo
[2] =>audi
        )
    [3] => software developer
)