溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

PHP的serialize序列化數(shù)據(jù)及JSON格式化數(shù)據(jù)分析

發(fā)布時間:2021-09-01 21:23:34 來源:億速云 閱讀:200 作者:chen 欄目:開發(fā)技術(shù)

本篇內(nèi)容主要講解“PHP的serialize序列化數(shù)據(jù)及JSON格式化數(shù)據(jù)分析”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“PHP的serialize序列化數(shù)據(jù)及JSON格式化數(shù)據(jù)分析”吧!


serialize序列化
我們在一些老的WEB系統(tǒng)中可能會看到在數(shù)據(jù)庫或在文本文件中存儲著一大串貌似有著特殊含義的字符串文本內(nèi)容。我們仔細(xì)看會發(fā)現(xiàn)它具有數(shù)據(jù)類型和結(jié)構(gòu)等信息,但是它并不容易人工閱讀,它只適合PHP程序讀取。PHP的serialize將數(shù)組進行了序列化并存儲。我們假設(shè)有這樣一個數(shù)組:

$arr = array( 
  "0" => array( 
    "gameName" => "德乙", 
    "homeName" => "比勒費爾德", 
    "guestName" => "不倫瑞克", 
    "endTime" => "2015-08-21" 
  ), 
  "1" => array( 
    "gameName" => "英超", 
    "homeName" => "水晶宮", 
    "guestName" => "阿斯頓維拉", 
    "endTime" => "2015-08-22" 
  ) 
);

我們要將這個數(shù)組內(nèi)容存儲在數(shù)據(jù)庫或者文本文件中,以便其他地方讀取。

$serialize = serialize($arr); 
echo $serialize;

我們使用PHP的serialize將數(shù)組進行序列化,輸出以下結(jié)果:

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

以上輸出的結(jié)果看上去比較復(fù)雜,其實也很簡單,它說明的就是一些數(shù)據(jù)類型和結(jié)構(gòu)。
a:2說明這是個有兩個元素的數(shù)組(array);
i:0指序列索引;
a:4指有4個字段
s:8:"gameName"說明這是有8個字符的字符串(string)
實際開發(fā)中我們只將序列化后的數(shù)據(jù)進行存儲,并不要去關(guān)心存儲的格式和以及字段意思。如果要將序列化后的數(shù)據(jù)恢復(fù)成數(shù)組,則使用unserialize()函數(shù)即可。

print_r(unserialize($serialize));

以上代碼可以打印出數(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)用。

$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后,數(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));

到此,相信大家對“PHP的serialize序列化數(shù)據(jù)及JSON格式化數(shù)據(jù)分析”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI