PHP的serialize序列化資料以及JSON格式化資料分析,serializejson_PHP教程

來源:互聯網
上載者:User

PHP的serialize序列化資料以及JSON格式化資料分析,serializejson


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格式化資料詳細分析就這麼多,如果想瞭解更多的內容請繼續關注。

http://www.bkjia.com/PHPjc/1060102.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1060102.htmlTechArticlePHP的serialize序列化資料以及JSON格式化資料分析,serializejson PHP的serialize是將變數序列化,返回一個具有變數類型和結構的字串運算式,而...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.