欢迎光临杨雨的个人博客站!

杨雨个人网站-杨雨个人博客-杨照佳

杨雨个人博客网站

关注互联网和搜索引擎的个人博客网站

首页 > WEB开发 > PHP >

PHP如何序列化数据?

发布时间:2019-05-24  编辑:杨雨个人博客网站   点击:   

大多数情况下,我们需要将复杂的数组存储在数据库中或PHP中的文件中。有些人可能会使用PHP内置函数来完成这项任务。所谓复杂数组是具有多个数据类型或数组的元素的数组。

PHP如何序列化数据?

但是,我们已经有了一个方便的解决方案来处理这种情况。我们不必编写自己的函数来将复杂数组转换为格式化字符串。有两种流行的变量序列化方法。(推荐:PHP教程

1、serialize()

2、unserialize()

我们可以使用serialize()函数序列化PHP中的任何数据。serialize()函数接受一个参数,该参数是我们想要分类的数据并返回一个序列化的字符串。

程序如下:

<?php 
  
//一个复杂的数组
$myvar = array( 
    'hello', 
    42, 
    array(1, 'two'), 
    'apple'
); 
  
// 转换成字符串 
$string = serialize($myvar); 
  
// 打印序列化的数据
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。我们可以使用unserialize()函数来反序列化变量的值,以返回复杂数组$myvar的原始值。

serialize()和unserialize()函数示例:

<?php
  
// 一个复杂的数组
$myvar = array(
    'hello',
    42,
    array(1, 'two'),
    'apple'
);
  
// 序列化上述数据
$string = serialize($myvar);
  
// 反序列化$string中的数据
$newvar = unserialize($string);  
   
// 打印未序列化的数据
print_r($newvar);
  
?>

输出:

Array
(
    [0] => hello
    [1] => 42
    [2] => Array
        (
            [0] => 1
            [1] => two
        )

    [3] => apple
)

这是本机PHP序列化方法。但是,由于JSON近年来变得如此受欢迎,他们决定在PHP 5.2中添加对它的支持。现在,您可以使用json_encode()和json_decode()函数分别在PHP中序列化和反序列化数据。

由于JSON格式仅为文本格式,因此可以轻松地将其发送到服务器或从服务器发送,并且可以通过任何编程语言用作数据格式。

让我们看看如何在PHP中使用json_encode()

<?php 
  
// 一个复杂的数组
$myvar = array( 
    'hello', 
    42, 
    array(1, 'two'), 
    'apple'
); 
  
// 序列化数据
$string = json_encode($myvar); 
  
// 打印序列化的数据
echo $string; 
  
?>

输出:

["hello",42,[1,"two"],"apple"]

我们可以使用json_decode()函数解码上面程序中编码的数据,以获得原始复杂数组。

程序如下:

<?php 
  
// 一个复杂的数组
$myvar = array( 
    'hello', 
    42, 
    array(1, 'two'), 
    'apple'
); 
  
// 序列化数据
$string = json_encode($myvar); 
  
// 解码上面编码的字符串
$newvar = json_decode($string); 
   
// 打印解码后的数据
print_r($newvar); 
  
?>

输出:

Array
(
    [0] => hello
    [1] => 42
    [2] => Array
        (
            [0] => 1
            [1] => two
        )
    [3] => apple
)
本文地址:http://itbyc.com/php/20484.html
转载请注明出处。
分享是一种快乐,也是一种美德:
博客首页 | WEB开发 | 网站运营 | CMS使用教程 滇ICP备14002061号-1