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数组函数序列之next() - 移动数组内部指针到下一个元素的位置,并返回该元素值
Oct 31 PHP
用来解析.htgroup文件的PHP类
Sep 05 PHP
php获取ip的三个属性区别介绍(HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR)
Sep 23 PHP
ajax完美实现两个网页 分页功能的实例代码
Apr 16 PHP
生成随机字符串和验证码的类的PHP实例
Dec 24 PHP
浅析Yii2 gridview实现批量删除教程
Apr 22 PHP
利用PHP实现一个简单的用户登记表示例
Apr 25 PHP
php表单习惯用的正则表达式
Oct 11 PHP
PHP实现将多个文件压缩成zip格式并下载到本地的方法示例
May 23 PHP
PHP通过get方法获得form表单数据方法总结
Sep 12 PHP
PHP小程序支付功能完整版【基于thinkPHP】
Mar 26 PHP
php提供实现反射的方法和实例代码
Sep 17 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
windows下配置apache+php+mysql时出现问题的处理方法
2014/06/20 PHP
PHP排序算法之基数排序(Radix Sort)实例详解
2018/04/21 PHP
PHP实现数据四舍五入的方法小结【4种方法】
2019/03/27 PHP
Jquery中Event对象属性小结
2015/02/27 Javascript
轻松学习Javascript闭包函数
2015/12/15 Javascript
AngularJS教程 ng-style 指令简单示例
2016/08/03 Javascript
自己封装的一个原生JS拖动方法(推荐)
2016/11/22 Javascript
JS查找字符串中出现最多的字符及个数统计
2017/02/04 Javascript
EasyUI为Numberbox添加blur事件的方法
2017/03/05 Javascript
Vue生命周期示例详解
2017/04/12 Javascript
JavaScript实现简单的四则运算计算器完整实例
2017/04/28 Javascript
JavaScript获取用户所在城市及地理位置
2018/04/21 Javascript
VUE Error: getaddrinfo ENOTFOUND localhost
2018/05/03 Javascript
Node.js系列之安装配置与基本使用(1)
2019/08/30 Javascript
100行代码实现vue表单校验功能(小白自编)
2019/11/19 Javascript
OpenLayers3实现测量功能
2020/09/25 Javascript
python中将一个全部为int的list 转化为str的list方法
2018/04/09 Python
Python实现的json文件读取及中文乱码显示问题解决方法
2018/08/06 Python
python实现飞机大战游戏
2020/10/26 Python
Django ModelForm组件使用方法详解
2019/07/23 Python
浅谈tensorflow中Dataset图片的批量读取及维度的操作详解
2020/01/20 Python
python实现人工蜂群算法
2020/09/18 Python
GLAMGLOW格莱魅美国官网:美国知名的面膜品牌
2016/12/31 全球购物
体育纪念品、亲笔签名的体育收藏品:Steiner Sports
2020/07/31 全球购物
Linux机考试题
2015/10/16 面试题
J2EE系统只能是基于web
2015/09/08 面试题
大学生实习自我鉴定
2013/12/11 职场文书
学生打架检讨书1000字
2014/01/16 职场文书
黄河象教学反思
2014/02/10 职场文书
党员教师四风问题整改措施思想汇报
2014/10/08 职场文书
优秀共产党员事迹材料
2014/12/18 职场文书
防溺水安全教育主题班会
2015/08/12 职场文书
读《工匠精神》有感:热爱工作,精益求精
2019/12/28 职场文书
再也不用花钱买漫画!Python爬取某漫画的脚本及源码
2021/06/09 Python
解决ObjectMapper.convertValue() 遇到的一些问题
2021/06/30 Java/Android
pytorch实现加载保存查看checkpoint文件
2022/07/15 Python