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 GD绘制24小时柱状图
Jun 28 PHP
一个很不错的PHP翻页类
Jun 01 PHP
php 各种应用乱码问题的解决方法
May 09 PHP
PHP错误抑制符(@)导致引用传参失败Bug的分析
May 02 PHP
PHP使用SOAP调用.net的WebService数据
Nov 12 PHP
免费的ip数据库淘宝IP地址库简介和PHP调用实例
Apr 08 PHP
合并ThinkPHP配置文件以消除代码冗余的实现方法
Jul 22 PHP
PHP获取当前页面URL函数实例
Oct 22 PHP
php抓取并保存网站图片的实现代码
Oct 28 PHP
WordPress过滤垃圾评论的几种主要方法小结
Jul 11 PHP
PHP基于正则批量替换Img中src内容实现获取缩略图的功能示例
Jun 07 PHP
PHP编程实现计算抽奖概率算法完整实例
Aug 09 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
PHP5.0对象模型探索之抽象方法和抽象类
2006/09/05 PHP
php数组函数序列之ksort()对数组的元素键名进行升序排序,保持索引关系
2011/11/02 PHP
PHP学习散记_编码(json_encode 中文不显示)
2011/11/10 PHP
win7+apache+php+mysql环境配置操作详解
2013/06/10 PHP
php批量删除cookie的简单实现方法
2015/01/26 PHP
php编写简单的文章发布程序
2015/06/18 PHP
PHP自动生成表单代码分享
2015/06/19 PHP
Smarty模板引擎缓存机制详解
2016/05/23 PHP
PHP实现RTX发送消息提醒的实例代码
2017/01/03 PHP
Laravel中unique和exists验证规则的优化详解
2018/01/28 PHP
javascript 动态加载 css 方法总结
2009/07/11 Javascript
JavaScript 空位补零实现代码
2010/02/26 Javascript
js实现双向链表互联网机顶盒实战应用实现
2011/10/28 Javascript
js实现文本框支持加减运算的方法
2015/08/19 Javascript
jquery+json实现动态商品内容展示的方法
2016/01/14 Javascript
理解JavaScript事件对象
2016/01/25 Javascript
js实现String.Fomat的实例代码
2016/09/02 Javascript
微信小程序 MINA文件结构
2016/10/17 Javascript
简单谈谈React中的路由系统
2017/07/25 Javascript
vue调用语音播放的方法
2019/09/27 Javascript
使用PYTHON创建XML文档
2012/03/01 Python
Python os模块学习笔记
2015/06/21 Python
python对json的相关操作实例详解
2017/01/04 Python
Python3中正则模块re.compile、re.match及re.search函数用法详解
2018/06/11 Python
Python爬虫文件下载图文教程
2018/12/23 Python
django框架两个使用模板实例
2019/12/11 Python
PyTorch 普通卷积和空洞卷积实例
2020/01/07 Python
python 对任意数据和曲线进行拟合并求出函数表达式的三种解决方案
2020/02/18 Python
Python 实现图片转字符画的示例(静态图片,gif皆可)
2020/11/05 Python
python drf各类组件的用法和作用
2021/01/12 Python
图库照片、免版税图片、矢量艺术、视频片段:Depositphotos
2019/08/02 全球购物
农业资源与环境专业自荐信范文
2013/12/30 职场文书
妇女儿童发展规划实施方案
2014/03/16 职场文书
医生见习报告范文
2014/11/03 职场文书
写给汽车4S店的创业计划书,拿来即用!
2019/08/09 职场文书
python3 删除所有自定义变量的操作
2021/04/08 Python