gpt4 book ai didi

php - 如何使用 php serialize() 和 unserialize()

转载 作者:IT老高 更新时间:2023-10-28 11:48:39 25 4
gpt4 key购买 nike

我的问题很基础。

关于 serialize()unserialize() 在 php 中的确切含义,我没有找到任何示例来满足我的需求?他们只是举了一个例子——序列化一个数组并以无法解释的格式显示输出。通过他们的行话很难理解基本概念。

编辑:

<?php

$a= array( '1' => 'elem 1', '2'=> 'elem 2', '3'=>' elem 3');
print_r($a);
echo ("<br></br>");
$b=serialize($a);
print_r($b);

?>

输出:

Array ( [1] => elem 1 [2] => elem 2 [3] => elem 3 ) 

a:3:{i:1;s:6:"elem 1";i:2;s:6:"elem 2";i:3;s:7:" elem 3";}

我无法理解第二个输出。除此之外,任何人都可以举一个例子说明我需要在使用它之前序列化一个php数组吗?

最佳答案

PHP 数组或对象或其他复杂数据结构不能在正在运行的 PHP 脚本之外传输、存储或以其他方式使用。如果您想在单次运行脚本之外持久化这样一个复杂的数据结构,您需要序列化它。这只是意味着将结构放入一个“较低的公分母”中,可以由 PHP 以外的东西处理,如数据库、文本文件、套接字。标准的 PHP 函数 serialize 只是 一种格式 来表达这样的事情,它将数据结构序列化为 PHP 独有的字符串表示形式,并且可以反转为 PHP 对象使用 反序列化。不过还有许多其他格式,例如 JSON 或 XML。


以这个常见问题为例:

如何将 PHP 数组 传递给 Javascript?

PHP 和 Javascript 只能通过字符串进行通信。您可以非常轻松地将字符串 "foo" 传递给 Javascript。您可以非常轻松地将数字 1 传递给 Javascript。您可以轻松地将 bool 值 truefalse 传递给 Javascript。但是如何将这个数组传递给 Javascript?

Array ( [1] => elem 1 [2] => elem 2 [3] => elem 3 ) 

答案是序列化。对于 PHP/Javascript,JSON 实际上是更好的序列化格式:

{ 1 : 'elem 1', 2 : 'elem 2', 3 : 'elem 3' }

Javascript 可以轻松地将其转换为实际的 Javascript 数组。

不过,这也是相同数据结构的有效表示:

a:3:{i:1;s:6:"elem 1";i:2;s:6:"elem 2";i:3;s:7:" elem 3";}

但几乎只有 PHP 使用它,其他地方几乎不支持这种格式。
这很常见,也得到了很好的支持:

<array>
<element key='1'>elem 1</element>
<element key='2'>elem 2</element>
<element key='3'>elem 3</element>
</array>

在很多情况下,您需要将复杂的数据结构作为字符串传递。序列化,将任意数据结构表示为字符串,解决了如何做到这一点。

关于php - 如何使用 php serialize() 和 unserialize(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8641889/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com