《PHP編程:PHP的serialize序列化數(shù)據(jù)以及JSON格式化數(shù)據(jù)分析》要點:
本文介紹了PHP編程:PHP的serialize序列化數(shù)據(jù)以及JSON格式化數(shù)據(jù)分析,希望對您有用。如果有疑問,可以聯(lián)系我們。
PHP實例PHP的serialize是將變量序列化,返回一個具有變量類型和布局的字符串表達(dá)式,而JSON則是一種更輕、更友好的用于接口(AJAX、REST等)數(shù)據(jù)交換的格式. 其實兩者都是以一種字符串的方式來體現(xiàn)一種數(shù)據(jù)布局.那么他們之間又有什么區(qū)別呢?
serialize序列化
我們在一些老的WEB系統(tǒng)中可能會看到在數(shù)據(jù)庫或在文本文件中存儲著一大串貌似有著特殊含義的字符串文本內(nèi)容.我們仔細(xì)看會發(fā)現(xiàn)它具有數(shù)據(jù)類型和布局等信息,但是它并不容易人工閱讀,它只適合PHP程序讀取.PHP的serialize將數(shù)組進(jìn)行了序列化并存儲.我們假設(shè)有這樣一個數(shù)組:
PHP實例
$arr = array(
"0" => array(
"gameName" => "德乙",
"homeName" => "比勒費爾德",
"guestName" => "不倫瑞克",
"endTime" => "2015-08-21"
),
"1" => array(
"gameName" => "英超",
"homeName" => "水晶宮",
"guestName" => "阿斯頓維拉",
"endTime" => "2015-08-22"
)
);
PHP實例我們要將這個數(shù)組內(nèi)容存儲在數(shù)據(jù)庫或者文本文件中,以便其他地方讀取.
PHP實例
$serialize = serialize($arr);
echo $serialize;
PHP實例我們使用PHP的serialize將數(shù)組進(jìn)行序列化,輸出以下結(jié)果:
PHP實例
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";}}
PHP實例以上輸出的結(jié)果看上去比擬復(fù)雜,其實也很簡單,它說明的就是一些數(shù)據(jù)類型和結(jié)構(gòu).
a:2說明這是個有兩個元素的數(shù)組(array);
i:0指序列索引;
a:4指有4個字段
s:8:"gameName"說明這是有8個字符的字符串(string)
實際開發(fā)中我們只將序列化后的數(shù)據(jù)進(jìn)行存儲,并不要去關(guān)心存儲的格式和以及字段意思.如果要將序列化后的數(shù)據(jù)恢復(fù)成數(shù)組,則使用unserialize()函數(shù)即可.
PHP實例
print_r(unserialize($serialize));
PHP實例以上代碼可以打印出數(shù)組.
JSON數(shù)據(jù)解析
我們知道,PHP操作JSON可以使用json_encode()和json_decode()兩個函數(shù).json_encode()可以將數(shù)組轉(zhuǎn)換成json格式的文本數(shù)據(jù),它便利存儲和讀取,而json_decode()可以直接將json數(shù)據(jù)轉(zhuǎn)換成數(shù)組,便利調(diào)用.
PHP實例
$jsonencode = json_encode($arr);
echo $jsonencode;
PHP實例輸出:
PHP實例
[{"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"}]
PHP實例很顯然,使用JSON后,數(shù)據(jù)空間要比serialize少,輸出的結(jié)果中中文字符串經(jīng)過編碼,仔細(xì)看是鍵值對應(yīng),便于人工識別,而且關(guān)鍵是JSON格式的數(shù)據(jù)方便其他語種讀取并識別,所以有人說它是XML替代品.JSON格式的數(shù)據(jù)能和WEB前端JS完成異步交互過程.如果要將json還原成數(shù)組,可以使用json_decode()函數(shù).
print_r(json_decode($jsonencode,true));
關(guān)于JSON的應(yīng)用有興趣的同學(xué)可以參考本站文章:PHP中JSON的應(yīng)用
總結(jié)
PHP的serialize將數(shù)組序列化后是便于存儲,而JSON格式的數(shù)據(jù)不僅便于存儲還能跟其他語言如javascript讀取.它們在性能上可能會有細(xì)微區(qū)別,如果前后端交互使用比擬多的話建議使用JSON,結(jié)合PHP、Javascript、JSON以及Ajax就可以完成強大的數(shù)據(jù)交互功能.
PHP實例關(guān)于PHP的serialize序列化數(shù)據(jù)以及JSON格式化數(shù)據(jù)詳細(xì)闡發(fā)就這么多,如果想了解更多的內(nèi)容請繼續(xù)關(guān)注.
維易PHP培訓(xùn)學(xué)院每天發(fā)布《PHP編程:PHP的serialize序列化數(shù)據(jù)以及JSON格式化數(shù)據(jù)分析》等實戰(zhàn)技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養(yǎng)人才。
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/8604.html