38、PHP 原生魅力 - 字符串 - 序列化字符串 & 反序列化

作者: 温新

图书: 【原生 PHP 魅力】

阅读: 194

时间: 2024-10-18 10:01:55

序列化: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
        )

)
请登录后再评论