PHP:数组变量的序列化和反序列化

序列化和反序列化是PHP操作数据库、读写文件时常见的操作。

序列化,就是将PHP的变量转化为可保存的、可传输的字符串的过程;

反序列化,则是将(序列化的)字符串转化回变量。

比如,我们需要将某学生的个人信息写入数据库,可以这样:

$arr = array(
    "name" => "山可唠",
    "age" => "24",
    "grade" => "六",
    "class" => "一"
);
$str = serialize($arr);
echo $str;

输出:a:4:{s:4:"name";s:9:"山可唠";s:3:"age";s:2:"24";s:5:"grade";s:3:"六";s:5:"class";s:3:"一";}

序列化后,我们得到一长串文本。

将其存入数据库(或文件),需要时读出,再反序列化为数组,即可取值:

$str = 'a:4:{s:4:"name";s:9:"山可唠";s:3:"age";s:2:"24";s:5:"grade";s:3:"六";s:5:"class";s:3:"一";}';
$arr = unserialize($str);
print_r($arr) ;


输出:Array ( [name] => 山可唠 [age] => 24 [grade] => 六 [class] => 一 )

这种方式很适合用于处理信息表单。

假设某表单有数十个input,且可扩展,那么在数据库中很难处理——你不可能预设足够多的数据库栏目。因此,最简单的方式便是序列化后直接存到数据库中,需要时再读出,呈现在前端。