在 PHP 中,序列化与反序列化的基本目的是将对象或数组转化为字符串,便于数据存储或网络传输,反之亦然。序列化将数据转换为字符串,而反序列化则是将字符串转换回原始数据类型,如对象或数组。
PHP 提供了 serialize() 函数用于将对象或数组转化为字符串。例如:
$data = [
'name' => 'John Doe',
'age' => 30
];
$serialized_data = serialize($data);
此时,$serialized_data 变量将保存一个包含序列化后数据的字符串。
要将序列化的字符串还原为原始的对象或数组,PHP 提供了 unserialize() 函数。例如:
$unserialized_data = unserialize($serialized_data);
var_dump($unserialized_data);
这将输出原始数据结构:
array(2) {
'name' => string(8) "John Doe",
'age' => int(30)
}
在实际应用中,序列化与反序列化常用于保存会话数据,以避免用户关闭浏览器或切换设备后丢失数据。可以使用 serialize() 将会话数据保存在数据库中:
$data = [
'user_id' => 123,
'cart_items' => ['item1', 'item2']
];
$serialized_data = serialize($data);
$_SESSION['saved_data'] = $serialized_data;
随后,通过 unserialize() 可以在需要时恢复数据:
$serialized_data = $_SESSION['saved_data'];
$data = unserialize($serialized_data);
您可以随时访问恢复后的数据:
echo $data['user_id']; // 输出:123
echo $data['cart_items'][0]; // 输出:item1
通过序列化与反序列化,PHP 提供了强大的数据存储和传输功能,特别是在会话数据的保存与恢复中非常有用。掌握这些技巧,将帮助您更高效地处理网站中的会话与数据存储问题。