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来检测proxy
Oct 09 PHP
PHP防注入安全代码
Apr 09 PHP
PHP JSON格式数据交互实例代码详解
Jan 13 PHP
PHP中对用户身份认证实现两种方法
Jun 04 PHP
PHP 杂谈《重构-改善既有代码的设计》之四 简化条件表达式
Apr 09 PHP
php代码中使用换行及(\n或\r\n和br)的应用
Feb 02 PHP
PHP批量查询WordPress留言者E-mail地址实现方法
Feb 15 PHP
php英文单词统计器
Jun 23 PHP
phpStudy2016 配置多个域名期间遇到的问题小结
Oct 19 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
Dec 21 PHP
php精度计算的问题解析
Jun 21 PHP
php简单检测404页面的方法示例
Aug 23 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 地区分类排序算法
2013/07/01 PHP
PHP使用mysql_fetch_object从查询结果中获取对象集的方法
2015/03/18 PHP
php封装的数据库函数与用法示例【参考thinkPHP】
2016/11/08 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
2020/02/27 PHP
js word表格动态添加代码
2010/06/07 Javascript
网站页面自动跳转实现方法PHP、JSP(上)
2010/08/01 Javascript
阻止子元素继承父元素事件具体思路及实现
2013/05/02 Javascript
JS 日期比较大小的简单实例
2014/01/13 Javascript
jQuery实现的图片分组切换焦点图插件
2015/01/06 Javascript
jQuery中clone()方法用法实例
2015/01/16 Javascript
js实现简单选项卡与自动切换效果的方法
2015/04/10 Javascript
详细解读JavaScript的跨浏览器事件处理
2015/08/12 Javascript
Bootstrap表单布局
2016/07/19 Javascript
BootStrap 模态框实现刷新网页并关闭功能
2017/01/04 Javascript
浅谈mvvm-simple双向绑定简单实现
2018/04/18 Javascript
vue2.0 移动端实现下拉刷新和上拉加载更多的示例
2018/04/23 Javascript
vue组件(全局,局部,动态加载组件)
2018/09/02 Javascript
vue实现axios图片上传功能
2019/08/20 Javascript
JS代码触发事件代码实例
2020/01/02 Javascript
Python入门及进阶笔记 Python 内置函数小结
2014/08/09 Python
教你用python3根据关键词爬取百度百科的内容
2016/08/18 Python
ansible作为python模块库使用的方法实例
2017/01/17 Python
Python中将dataframe转换为字典的实例
2018/04/13 Python
Pandas中DataFrame的分组/分割/合并的实现
2019/07/16 Python
为什么python比较流行
2020/06/19 Python
CSS3地图动态实例代码(圆圈向外扩散)
2018/06/15 HTML / CSS
同步和异步有何异同,在什么情况下分别使用他们?举例说明
2014/02/27 面试题
学生社团文化节开幕式主持词
2014/03/28 职场文书
《生命的药方》教学反思
2014/04/08 职场文书
公司向个人借款协议书范本
2014/10/09 职场文书
关于运动会的广播稿50字
2014/10/17 职场文书
项目技术负责人岗位职责
2015/04/13 职场文书
会议营销主持词
2015/07/03 职场文书
2016年领导干部廉政承诺书
2016/03/24 职场文书
小学秋季运动会加油口号及加油稿
2019/08/19 职场文书
解决golang结构体tag编译错误的问题
2021/05/02 Golang