PHP |序列化数据

大多数情况下,我们需要存储一个 复杂阵列 在数据库或PHP中的文件中。我们中的一些人可能确实在寻找某种内置功能来完成这项任务。复杂数组是包含多个数据类型或数组的元素的数组。 但是,我们已经有了一个方便的解决方案来处理这种情况。我们不必编写自己的函数来将复杂数组转换为格式化字符串。有两种常用的变量序列化方法。

null
  • 序列化()
  • 取消序列化()

我们可以使用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和许多其他语言兼容。然而,对于复杂的对象,一些信息可能会丢失。

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享