为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用php序列化()和取消序列化()

如何使用php序列化()和取消序列化()

PHP
哔哔one 2019-07-01 09:46:39
如何使用php序列化()和取消序列化()我的问题很基本。我找不到任何例子来满足我的需要。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数组之前我需要序列化它吗?
查看完整描述

3 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

PHP数组、对象或其他复杂数据结构不能在运行PHP脚本..如果你想坚持这种复杂的数据结构超出了脚本的一次运行,您需要串行化它。这仅仅意味着将结构放入一个“较低的公分母”中,它可以由PHP以外的东西来处理,比如数据库、文本文件、套接字。标准PHP函数serialize只是格式为了表达这种情况,它将数据结构序列化为一个字符串表示形式,该字符串表示形式是PHP特有的,可以使用以下方法将其反转为PHP对象unserialize..不过,还有许多其他格式,如JSON或XML。


以这个常见的问题为例:

如何传递PHP列阵给Javascript?

PHP和Javascript只能通过字符串进行通信。你可以传递字符串"foo"很容易找到Javascript。你可以通过这个号码1很容易找到Javascript。您可以传递布尔值。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>

在许多情况下,你需要通过复杂数据结构就像弦乐一样。序列化将任意数据结构表示为字符串,解决了如何做到这一点。


查看完整回答
反对 回复 2019-07-01
?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

当您想要使php值可存储时,必须将它转换为字符串值,这就是序列化()的确如此。和取消序列化()做相反的事。


查看完整回答
反对 回复 2019-07-01
  • 3 回答
  • 0 关注
  • 1171 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信