PHP的serialize序列化数据以及JSON格式化数据分析


Posted in PHP onOctober 10, 2015

PHP的serialize是将变量序列化,返回一个具有变量类型和结构的字符串表达式,而JSON则是一种更轻、更友好的用于接口(AJAX、REST等)数据交换的格式。 其实两者都是以一种字符串的方式来体现一种数据结构。那么他们之间又有什么区别呢?
serialize序列化
我们在一些老的WEB系统中可能会看到在数据库或在文本文件中存储着一大串貌似有着特殊含义的字符串文本内容。我们仔细看会发现它具有数据类型和结构等信息,但是它并不容易人工阅读,它只适合PHP程序读取。PHP的serialize将数组进行了序列化并存储。我们假设有这样一个数组:

$arr = array( 
  "0" => array( 
    "gameName" => "德乙", 
    "homeName" => "比勒费尔德", 
    "guestName" => "不伦瑞克", 
    "endTime" => "2015-08-21" 
  ), 
  "1" => array( 
    "gameName" => "英超", 
    "homeName" => "水晶宫", 
    "guestName" => "阿斯顿维拉", 
    "endTime" => "2015-08-22" 
  ) 
);

我们要将这个数组内容存储在数据库或者文本文件中,以便其他地方读取。

$serialize = serialize($arr); 
echo $serialize;

我们使用PHP的serialize将数组进行序列化,输出以下结果:

a:2:{i:0;a:4:{s:8:"gameName";s:6:"德乙";s:8:"homeName";s:15:"比勒费尔德";s:9:"guestName";s:12:"不伦瑞克";s:7:"endTime";s:10:"2015-08-21";}i:1;a:4:{s:8:"gameName";s:6:"英超";s:8:"homeName";s:9:"水晶宫";s:9:"guestName";s:15:"阿斯顿维拉";s:7:"endTime";s:10:"2015-08-22";}}

以上输出的结果看上去比较复杂,其实也很简单,它说明的就是一些数据类型和结构。
a:2说明这是个有两个元素的数组(array);
i:0指序列索引;
a:4指有4个字段
s:8:"gameName"说明这是有8个字符的字符串(string)
实际开发中我们只将序列化后的数据进行存储,并不要去关心存储的格式和以及字段意思。如果要将序列化后的数据恢复成数组,则使用unserialize()函数即可。

print_r(unserialize($serialize));

以上代码可以打印出数组。
JSON数据解析
我们知道,PHP操作JSON可以使用json_encode()和json_decode()两个函数。json_encode()可以将数组转换成json格式的文本数据,它方便存储和读取,而json_decode()可以直接将json数据转换成数组,方便调用。

$jsonencode = json_encode($arr); 
echo $jsonencode;

输出:

[{"gameName":"\u5fb7\u4e59","homeName":"\u6bd4\u52d2\u8d39\u5c14\u5fb7","guestName":"\u4e0d\u4f26\u745e\u514b","endTime":"2015-08-21"},{"gameName":"\u82f1\u8d85","homeName":"\u6c34\u6676\u5bab","guestName":"\u963f\u65af\u987f\u7ef4\u62c9","endTime":"2015-08-22"}]

很显然,使用JSON后,数据空间要比serialize少,输出的结果中中文字符串经过编码,仔细看是键值对应,便于人工识别,而且关键是JSON格式的数据方便其他语种读取并识别,所以有人说它是XML替代品。JSON格式的数据能和WEB前端JS完成异步交互过程。如果要将json还原成数组,可以使用json_decode()函数。
print_r(json_decode($jsonencode,true));
关于JSON的应用有兴趣的同学可以参考本站文章:PHP中JSON的应用
总结
PHP的serialize将数组序列化后是便于存储,而JSON格式的数据不仅便于存储还能跟其他语言如javascript读取。它们在性能上可能会有细微区别,如果前后端交互使用比较多的话建议使用JSON,结合PHP、Javascript、JSON以及Ajax就可以完成强大的数据交互功能。

关于PHP的serialize序列化数据以及JSON格式化数据详细分析就这么多,如果想了解更多的内容请继续关注。

PHP 相关文章推荐
php Mysql日期和时间函数集合
Nov 16 PHP
使用eAccelerator加密PHP程序
Oct 03 PHP
PHP 利用AJAX获取网页并输出的实现代码(Zjmainstay)
Aug 31 PHP
使用php将某个目录下面的所有文件罗列出来的方法详解
Jun 21 PHP
PHP读取大文件的类SplFileObject使用介绍
Apr 09 PHP
Thinkphp将二维数组变为标签适用的一维数组方法总结
Oct 30 PHP
PHP采集静态页面并把页面css,img,js保存的方法
Dec 23 PHP
php相对当前文件include其它文件的方法
Mar 13 PHP
php中JSON的使用方法
Apr 30 PHP
PHP编程中尝试程序并发的几种方式总结
Mar 21 PHP
PHP实现的随机IP函数【国内IP段】
Jul 20 PHP
PHP 文件上传限制问题
Sep 01 PHP
解决PHP里大量数据循环时内存耗尽的方法
Oct 10 #PHP
php中删除、清空session的方式总结
Oct 09 #PHP
[原创]ThinkPHP让../Public在模板不解析(直接输出)的方法
Oct 09 #PHP
PHP中Closure类的使用方法及详解
Oct 09 #PHP
如何解决phpmyadmin导入数据库文件最大限制2048KB
Oct 09 #PHP
PHP程序员不应该忽略的3点
Oct 09 #PHP
PHP+jQuery+Ajax实现分页效果 jPaginate插件的应用
Oct 09 #PHP
You might like
php中用foreach来操作数组的代码
2011/07/17 PHP
php smarty模板引擎的6个小技巧
2014/04/24 PHP
thinkPHP多语言切换设置方法详解
2016/11/11 PHP
YII2 实现多语言配置的方法分享
2017/01/11 PHP
DOM下的节点属性和操作小结
2009/05/14 Javascript
jQuery实现的类flash菜单效果代码
2010/05/17 Javascript
javascript中call和apply方法浅谈
2013/09/27 Javascript
JavaScript中boolean类型之三种情景实例代码
2016/11/21 Javascript
教你一步步用jQyery实现轮播器
2016/12/18 Javascript
JS动态遍历json中所有键值对的方法(不知道属性名的情况)
2016/12/28 Javascript
vue实现列表的添加点击
2016/12/29 Javascript
ES7中利用Await减少回调嵌套的方法详解
2017/11/01 Javascript
基于jquery实现五星好评
2017/11/18 jQuery
在 vue-cli v3.0 中使用 SCSS/SASS的方法
2018/06/14 Javascript
ES6 Promise对象的含义和基本用法分析
2019/06/14 Javascript
Vue实现购物车实例代码两则
2020/05/30 Javascript
vue实现顶部菜单栏
2020/11/08 Javascript
[48:41]VP vs VG Supermajor小组赛 B组胜者组决赛 BO3 第二场 6.2
2018/06/03 DOTA
基于Python中求和函数sum的用法详解
2018/06/28 Python
通过 Django Pagination 实现简单分页功能
2019/11/11 Python
Python字符串hashlib加密模块使用案例
2020/03/10 Python
django实现更改数据库某个字段以及字段段内数据
2020/03/31 Python
Python下划线5种含义代码实例解析
2020/07/10 Python
分享8款纯CSS3实现的搜索框功能
2017/09/14 HTML / CSS
让IE下支持Html5的placeholder属性的插件
2014/09/02 HTML / CSS
英国花园药房: The Garden Pharmacy
2017/12/28 全球购物
初婚未育未抱养证明
2014/01/12 职场文书
门面房租房协议书
2014/08/20 职场文书
群众路线剖析材料(四风)
2014/11/05 职场文书
贷款担保书
2015/01/20 职场文书
成绩单家长意见
2015/06/03 职场文书
婚礼长辈答谢词
2015/09/29 职场文书
导游词之无锡古运河
2019/11/14 职场文书
vue引入Excel表格插件的方法
2021/04/28 Vue.js
纯html+css实现Element loading效果
2021/08/02 HTML / CSS
CSS文本阴影 text-shadow 悬停效果详解
2022/05/25 HTML / CSS