大多数情况下,我们需要存储一个 复杂阵列 在数据库或PHP中的文件中。我们中的一些人可能确实在寻找某种内置功能来完成这项任务。复杂数组是包含多个数据类型或数组的元素的数组。 但是,我们已经有了一个方便的解决方案来处理这种情况。我们不必编写自己的函数来将复杂数组转换为格式化字符串。有两种常用的变量序列化方法。
- 序列化()
- 取消序列化()
我们可以使用serialize()函数序列化PHP中的任何数据。函数的作用是:接受一个参数,它是我们想要序列化的数据,并返回一个序列化的字符串。下面的程序说明了这一点:
<?php // a complex array $myvar = array ( 'hello' , 42, array (1, 'two' ), 'apple' ); // convert to a string $string = serialize( $myvar ); // printing the serialized data echo $string ; ?> |
输出:
a:4:{i:0;s:5:"hello";i:1;i:42;i:2;a:2:{i: 0;i:1;i:1;s:3:"two";}i:3;s:5:"apple";}
从上面的代码中,我们有一个带有序列化数据的变量, $string .我们可以使用 取消序列化() 函数返回到 复杂阵列 , $myvar .
下面的程序演示了serialize()和unserialize()函数:
<?php // a complex array $myvar = array ( 'hello' , 42, array (1, 'two' ), 'apple' ); // serialize the above data $string = serialize( $myvar ); // unserializing the data in $string $newvar = unserialize( $string ); // printing the unserialized data print_r( $newvar ); ?> |
输出:
Array ( [0] => hello [1] => 42 [2] => Array ( [0] => 1 [1] => two ) [3] => apple )
这是本机PHP序列化方法。然而,自从 JSON 近年来,它变得如此流行,他们决定在PHP5.2中添加对它的支持。现在你可以使用 json_encode() 和 json_decode() 函数分别用于在PHP中序列化和取消序列化数据。
自从 JSON 格式是纯文本的,它可以很容易地发送到服务器或从服务器发送,并且可以被任何编程语言用作数据格式。
让我们看看如何使用 json_encode() 在PHP中:
<?php // a complex array $myvar = array ( 'hello' , 42, array (1, 'two' ), 'apple' ); // serializing data $string = json_encode( $myvar ); // printing the serialized data echo $string ; ?> |
输出:
["hello",42,[1,"two"],"apple"]
我们可以使用json_decode()函数对上述程序中编码的数据进行解码,以获得原始的复杂数组。下面的程序说明了这一点:
<?php // a complex array $myvar = array ( 'hello' , 42, array (1, 'two' ), 'apple' ); // serializing data $string = json_encode( $myvar ); // decoding the above encoded string $newvar = json_decode( $string ); // printing the decoded data print_r( $newvar ); ?> |
输出:
Array ( [0] => hello [1] => 42 [2] => Array ( [0] => 1 [1] => two ) [3] => apple )
笔记 :JSON编码和解码更紧凑,最重要的是,与javascript和许多其他语言兼容。然而,对于复杂的对象,一些信息可能会丢失。