站长资源
中国站长网站

PHP的serialize序列化数据与JSON格式化数据优缺点

我们先来看个例子便于理解

1、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; 

结果如下:
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";}} 

这个仔细一看哪来的i,a,s这些是什么玩意,根本搞不明白,当然实际开发中我们也不需要知道他是什么玩意,拿来直接反序列化即可

print_r(unserialize($serialize)); 

2、JSON数据解析

PHP操作JSON可以使用json_encode()和json_decode()两个函数。json_encode()可以将数组转换成json格式的文本数据,它方便存储和读取,而json_decode()可以直接将json数据转换成数组,方便调用。

上面的数组我们再用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"}] 

还原成数组则是:

print_r(json_decode($jsonencode,true)); 

我们来分析下两者的优缺点:

使用json序列化和反序列化

优势

变量序列化后依然可读

可以给其他系统使用,因为JSON格式是标准的

劣势:

只对UFT-8的数据有效,其他编码可能不能很好工作

使用serialize方式序列化和反序列化

优势:

允许非UTF-8的变量

劣势:

编码后的文本对人来说是不可读的

无法被其他语言的系统引用

本文出处:来自互联网信息共享,请勿相信收费信息站长资源 » PHP的serialize序列化数据与JSON格式化数据优缺点

评论 抢沙发

评论前必须登录!