PHP序列化(serialize)及反序列化(unserialize)实例讲解

在学习编程的时候,经常会听到很多不熟悉的词。

序列化就是其中之一。

这次,我将通过以下内容来谈谈 PHP 序列化。

PHP序列化(serialize)及反序列化(unserialize)实例讲解  第1张

什么是序列化

当你想将数组等保存到数据库时使用序列化。

此外,它不仅可以用于保存,还可以用于发送和接收。

当你将数组直接存储在数据库中时通常会发生什么?

让我们看下示例:

["ciyawang1", "ciyawang2", "ciyawang3"]

并尝试再次获得它。

执行结果

'Array("ciyawang1", "ciyawang2", "ciyawang3")'

在没有序列化的情况下添加到数据库中后,如果再次检索,它就会变成一个字符串。

无法使用foreach语句从此字符串中提取值。

为此需要序列化。

序列化(serialize)

现在让我们实际进行序列化。

使用serialize函数进行序列化。

另外,序列化的数据类型不同,结果也会不同。

序列化数组

首先,序列化数组。

<?php
$test = ["ciyawang1", "ciyawang2", "ciyawang3"];
$disp = serialize($test);
echo $disp;

执行结果

a:3:{i:0;s:9:"ciyawang1";i:1;s:9:"ciyawang2";i:2;s:9:"ciyawang3";}

PHP序列化(serialize)及反序列化(unserialize)实例讲解  第2张

请注意,第一个 [a:3] 部分以 [type:value] 的形式显示。

表示数组的类型是a。

另外,之后显示变成数组数据部分,用[key;value;]表示。

序列化整数

接下来是整数。

<?php
$test = 50;
$disp = serialize($test);
echo $disp;

执行结果

i:50;

PHP序列化(serialize)及反序列化(unserialize)实例讲解  第3张

表示整数的类型是 i。

序列化字符串

最后是一个字符串。

<?php
$test = 'ciyawang';
$disp = serialize($test);
echo $disp;

执行结果

s:8:"ciyawang";

PHP序列化(serialize)及反序列化(unserialize)实例讲解  第4张

表示字符串的类型是 s。

在字符串的情况下,还有一个数字,表示字节数。

序列化很容易。

然后将序列化后的数据发送出去或者存入数据库。

反序列化(unserialize)

为了使用序列化的数据,不能直接使用。

你需要使用unserialize来恢复原来的类型和结构。

让我们回到上面的示例。

反序列化数组

首先,反序列化数组。

<?php
$test = ["ciyawang1", "ciyawang2", "ciyawang3"];
$disp = serialize($test);
echo $disp;
echo "<br />";
echo print_r(unserialize($disp));

1.输出序列化后的$disp,并打上换行符(<br />)使其更容易理解。

2.print_r打印输出反序列化后的$disp

执行结果

a:3:{i:0;s:9:"ciyawang1";i:1;s:9:"ciyawang2";i:2;s:9:"ciyawang3";}
Array ( [0] => ciyawang1 [1] => ciyawang2 [2] => ciyawang3 ) 1

PHP序列化(serialize)及反序列化(unserialize)实例讲解  第5张

第一行是序列化的结果,第二行是反序列化的结果。

反序列化整数

<?php
$test = 50;
$disp = serialize($test);
echo $disp;
echo "<br />";
echo unserialize($disp);

执行结果

i:50;
50

PHP序列化(serialize)及反序列化(unserialize)实例讲解  第6张

反序列化字符串

<?php
$test = 'ciyawang';
$disp = serialize($test);
echo $disp;
echo "<br />";
echo unserialize($disp);

执行结果

s:8:"ciyawang";
ciyawang

PHP序列化(serialize)及反序列化(unserialize)实例讲解  第7张

恢复为原始字符串。

结语

本篇文章讲的是PHP的序列化。

能把数据结构和类型原封不动的保存起来,非常方便,所以一定要记住。

本文来源:词雅网

本文地址:https://www.ciyawang.com/php-serialize-unserialize.html

本文使用「 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 」许可协议授权,转载或使用请署名并注明出处。

相关推荐