猿问

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

如何使用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数组之前我需要序列化它吗?


哔哔one
浏览 1172回答 3
3回答

陪伴而非守候

PHP数组、对象或其他复杂数据结构不能在运行PHP脚本..如果你想坚持这种复杂的数据结构超出了脚本的一次运行,您需要串行化它。这仅仅意味着将结构放入一个“较低的公分母”中,它可以由PHP以外的东西来处理,比如数据库、文本文件、套接字。标准PHP函数serialize只是格式为了表达这种情况,它将数据结构序列化为一个字符串表示形式,该字符串表示形式是PHP特有的,可以使用以下方法将其反转为PHP对象unserialize..不过,还有许多其他格式,如JSON或XML。以这个常见的问题为例:如何传递PHP列阵给Javascript?PHP和Javascript只能通过字符串进行通信。你可以传递字符串"foo"很容易找到Javascript。你可以通过这个号码1很容易找到Javascript。您可以传递布尔值。true和false很容易找到Javascript。但是如何将这个数组传递给Javascript呢?Array&nbsp;(&nbsp;[1]&nbsp;=>&nbsp;elem&nbsp;1&nbsp;[2]&nbsp;=>&nbsp;elem&nbsp;2&nbsp;[3]&nbsp;=>&nbsp;elem&nbsp;3&nbsp;)答案是串行化..对于PHP/Javascript,JSON实际上是更好的序列化格式:{&nbsp;1&nbsp;:&nbsp;'elem&nbsp;1',&nbsp;2&nbsp;:&nbsp;'elem&nbsp;2',&nbsp;3&nbsp;:&nbsp;'elem&nbsp;3'&nbsp;}JavaScript可以轻松地将其反转为实际的Javascript数组。不过,这也是相同数据结构的有效表示:a:3:{i:1;s:6:"elem&nbsp;1";i:2;s:6:"elem&nbsp;2";i:3;s:7:"&nbsp;elem&nbsp;3";}但是,几乎只有PHP才会使用它,其他地方对这种格式的支持也不多。尽管如此,这是非常常见的,也得到了很好的支持:<array> &nbsp;&nbsp;&nbsp;&nbsp;<element&nbsp;key='1'>elem&nbsp;1</element> &nbsp;&nbsp;&nbsp;&nbsp;<element&nbsp;key='2'>elem&nbsp;2</element> &nbsp;&nbsp;&nbsp;&nbsp;<element&nbsp;key='3'>elem&nbsp;3</element></array>在许多情况下,你需要通过复杂数据结构就像弦乐一样。序列化将任意数据结构表示为字符串,解决了如何做到这一点。

有只小跳蛙

当您想要使php值可存储时,必须将它转换为字符串值,这就是序列化()的确如此。和取消序列化()做相反的事。
随时随地看视频慕课网APP
我要回答