38、PHP 原生魅力 - 字符串 - 序列化字符串 & 反序列化
序列化:serialize
在你的 PHP 应用程序、项目或脚本中,您使用对象、数组或变量来管理数据。
如果您需要存储这些数据(例如,使用一个函数来转储具有所有属性及其对应值的对象的整个状态),您可以使用 serialize()
函数。
<?php
$array = [
['product' => 'Desk', 'price' => 200],
['product' => 'Chair', 'price' => 100],
['product' => 'Bookcase', 'price' => 150],
['product' => 'Door', 'price' => 100],
];
echo serialize($array);
输出如下:
$ php 38-serialize.php
a:4:{i:0;a:2:{s:7:"product";s:4:"Desk";s:5:"price";i:200;}i:1;a:2:{s:7:"product";s:5:"Chair";s:5:"price";i:100;}i:2;a:2:{s:7:"product";s:8:"Bookcase";s:5:"price";i:150;}i:3;a:2:{s:7:"product";s:4:"Door";s:5:"price";i:100;}}
如果你需要保存复杂变量(对象或数组)的状态,这个函数非常有用。
serialize() 函数返回一个字符串,因此您可以将其保存在数据库字段中、文本文件中或缓存系统中。
反序列化:unserialize
如果需要检索之前使用 serialize()
函数保存的对象或数组或变量,则可以使用 unserialize()
。它接受一个字符串作为输入,并试图将其转换为可用的变量:
<?php
$storage= 'a:4:{i:0;a:2:{s:7:"product";s:4:"Desk";s:5:"price";i:200;}i:1;a:2:{s:7:"product";s:5:"Chair";s:5:"price";i:100;}i:2;a:2:{s:7:"product";s:8:"Bookcase";s:5:"price";i:150;}i:3;a:2:{s:7:"product";s:4:"Door";s:5:"price";i:100;}}';
$arr = unserialize($storage);
print_r($arr);
输出如下:
$ php 38-serialize.php
Array
(
[0] => Array
(
[product] => Desk
[price] => 200
)
[1] => Array
(
[product] => Chair
[price] => 100
)
[2] => Array
(
[product] => Bookcase
[price] => 150
)
[3] => Array
(
[product] => Door
[price] => 100
)
)
请登录后再评论