用PHP序列化和反序列化

如果您有一个对象或数组要保存到以后,则可以使用serialize()和unserialize()函数。这些功能的操作非常简单。对于serialize()数组,只需将序列化函数传递给数组即可。

$array = array(1,2,3,4);

$serializedArray = serialize($array);

现在,当我们打印出序列化的数组时,我们得到以下内容。

a:4:{i:0;i:1;i:1;i:2;i:2;i:3;i:3;i:4;}

这包含重新创建数组所需的所有数据。注意不要编辑此字符串,因为如果要取消序列化并将其取回数组,它将无法使用。您可以将此字符串存储在文件或数据库中,以便以后重新创建完全相同的数组。

如果确实选择将序列化的字符串存储在数据库中,则可能还需要对其进行编码。这是为了停止数据库编码或删除任何字符并破坏您的数组。要对字符串进行编码,您可以通过这种方式使用base64_encode函数。

$encodedSerializedArray = base64_encode(serialize($array));

现在,该字符串包含以下内容。

YTo0OntpOjA7aToxO2k6MTtpOjI7aToyO2k6MztpOjM7aTo0O30=

为了再次取回数组,我们使用如下unserialize()函数。如果使用base64_encode()对数组进行编码,则可以使用base64_decode()函数再次将其转换为不可序列化的字符串。

$array = unserialize($array);

现在,$array变量包含我们的原始数组。

对对象也可以以完全相同的方式进行相同的操作。主要区别在于,__wakeup()一旦对象被重建,PHP将尝试调用该对象的函数(如果存在)。

以上是 用PHP序列化和反序列化 的全部内容, 来源链接: utcz.com/z/335675.html

回到顶部