当前位置:首页 > PHP教程 > php应用 > 列表

PHP如何序列化数据?

发布:smiling 来源: PHP粉丝网  添加日期:2020-01-10 17:15:25 浏览: 评论:0 

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

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

1、serialize()

2、unserialize()

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

程序如下:

  1. <?php  
  2.  
  3. //一个复杂的数组 
  4.  
  5. $myvar = array(  
  6.  
  7.     'hello',  
  8.  
  9.     42,  
  10.  
  11.     array(1, 'two'),  
  12.  
  13.     'apple' 
  14.  
  15. );  
  16.  
  17. // 转换成字符串  
  18.  
  19. $string = serialize($myvar);  
  20.  
  21. // 打印序列化的数据 
  22.  
  23. echo $string;  
  24.  
  25. ?> 

输出:

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()函数示例:

  1. <?php 
  2.  
  3. // 一个复杂的数组 
  4.  
  5. $myvar = array
  6.  
  7.     'hello'
  8.  
  9.     42, 
  10.  
  11.     array(1, 'two'), 
  12.  
  13.     'apple' 
  14.  
  15. ); 
  16.  
  17. // 序列化上述数据 
  18.  
  19. $string = serialize($myvar); 
  20.  
  21. // 反序列化$string中的数据 
  22.  
  23. $newvar = unserialize($string);   
  24.  
  25. // 打印未序列化的数据 
  26.  
  27. print_r($newvar); 
  28.  
  29.  
  30. ?> 

输出:

  1. Array 
  2.  
  3.  
  4.     [0] => hello 
  5.  
  6.     [1] => 42 
  7.  
  8.     [2] => Array 
  9.  
  10.         ( 
  11.  
  12.             [0] => 1 
  13.  
  14.             [1] => two 
  15.  
  16.         ) 
  17.  
  18.     [3] => apple 
  19.  

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

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

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

  1. <?php  
  2.  
  3. // 一个复杂的数组 
  4.  
  5. $myvar = array(  
  6.  
  7.     'hello',  
  8.  
  9.     42,  
  10.  
  11.     array(1, 'two'),  
  12.  
  13.     'apple' 
  14.  
  15. );  
  16.  
  17.     
  18.  
  19. // 序列化数据 
  20.  
  21. $string = json_encode($myvar);  
  22.  
  23.     
  24.  
  25. // 打印序列化的数据 
  26.  
  27. echo $string;  
  28.  
  29.     
  30.  
  31. ?> 

输出:

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

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

程序如下:

  1. <?php  
  2.  
  3. // 一个复杂的数组 
  4.  
  5. $myvar = array(  
  6.  
  7.     'hello',  
  8.  
  9.     42,  
  10.  
  11.     array(1, 'two'),  
  12.  
  13.     'apple' 
  14.  
  15. );  
  16.  
  17.     
  18.  
  19. // 序列化数据 
  20.  
  21. $string = json_encode($myvar);  
  22.  
  23.     
  24.  
  25. // 解码上面编码的字符串 
  26.  
  27. $newvar = json_decode($string);  
  28.  
  29. //phpfensi.com 
  30.  
  31. // 打印解码后的数据 
  32.  
  33. print_r($newvar);  
  34.  
  35.     
  36.  
  37. ?> 

输出:

  1. Array 
  2.  
  3.  
  4.     [0] => hello 
  5.  
  6.     [1] => 42 
  7.  
  8.     [2] => Array 
  9.  
  10.         ( 
  11.  
  12.             [0] => 1 
  13.  
  14.             [1] => two 
  15.  
  16.         ) 
  17.  
  18.     [3] => apple 
  19.  

Tags: PHP序列化数据

分享到: