PHP函数:serialize()和unserialize()的用法详解
PHP中的serialize()和unserialize()是两个非常常用的函数,在进行数据存储或者网络传输时经常会用到。下面我们来详细了解一下它们的用法。
一、序列化(serialize())
1.1 什么是序列化?
序列化是指将一个对象或者数组转化成字符串的过程,方便存储、传输或者其他需要的操作。序列化后的字符串可以存储到文件中,数据库中或者通过网络传输给其他服务器,不同的服务器或者语言都可以通过反序列化(unserialize()函数)将它还原成对象或者数组。
1.2 语法
serialize ( mixed $value ) : string
mixed $value :需要序列化的对象或者数组。
string :返回的序列化后的字符串。
1.3 示例
//定义一个数组
$arr=array("name"=>"Tom","age"=>18,"gender"=>"male");
//序列化数组
$str=serialize($arr);
echo $str;//输出:a:3:{s:4:"name";s:3:"Tom";s:3:"age";i:18;s:6:"gender";s:4:"male";}
可见,数组被序列化后,它的形式变成了字符串,并且每个元素都有一个标识,如下所示:
a:3:{s:4:"name";s:3:"Tom";s:3:"age";i:18;s:6:"gender";s:4:"male";}
其中,a:3表示这是一个数组,它有3个元素;s:4:"name";表示元素名为name,类型为字符串,长度为4;s:3:"age";表示元素名为age,类型为整数,值为18;s:6:"gender";表示元素名为gender,类型为字符串,长度为6。
二、反序列化(unserialize())
2.1 什么是反序列化?
反序列化是指将序列化后的字符串还原成原来的对象或者数组的过程。反序列化后的对象或数组与原来的相同,可以进行相同的操作。
2.2 语法
unserialize ( string $str ) : mixed
string $str :需要反序列化的字符串。
mixed:如果反序列化成功,返回原来的对象或数组,否则返回false。
2.3 示例
//定义一个字符串
$str='a:3:{s:4:"name";s:3:"Tom";s:3:"age";i:18;s:6:"gender";s:4:"male";}';
//反序列化字符串
$arr=unserialize($str);
print_r($arr);//输出:Array ( [name] => Tom [age] => 18 [gender] => male )
可见,反序列化后的结果与原来的数组相同。
