PHP的serialize序列化數據與JSON格式化數據


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" 
    ) 
); 

我們要將這個數組內容存儲在數據庫或者文本文件中,以便其他地方讀取。

 
        
1 $serialize = serialize($arr); 
2 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()函數即可。

 
        
1 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就可以完成強大的數據交互功能。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM