欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2015年10月10日 11:43:52   投稿:lijiao  
這篇文章的內(nèi)容是PHP的serialize序列化數(shù)據(jù)以及JSON格式化數(shù)據(jù)分析,需要的朋友可以參考下

PHP的serialize是將變量序列化,返回一個(gè)具有變量類型和結(jié)構(gòu)的字符串表達(dá)式,而JSON則是一種更輕、更友好的用于接口(AJAX、REST等)數(shù)據(jù)交換的格式。 其實(shí)兩者都是以一種字符串的方式來體現(xiàn)一種數(shù)據(jù)結(jié)構(gòu)。那么他們之間又有什么區(qū)別呢?
serialize序列化
我們?cè)谝恍├系腤EB系統(tǒng)中可能會(huì)看到在數(shù)據(jù)庫或在文本文件中存儲(chǔ)著一大串貌似有著特殊含義的字符串文本內(nèi)容。我們仔細(xì)看會(huì)發(fā)現(xiàn)它具有數(shù)據(jù)類型和結(jié)構(gòu)等信息,但是它并不容易人工閱讀,它只適合PHP程序讀取。PHP的serialize將數(shù)組進(jìn)行了序列化并存儲(chǔ)。我們假設(shè)有這樣一個(gè)數(shù)組:

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

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

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

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

a:2:{i:0;a:4:{s:8:"gameName";s:6:"德乙";s:8:"homeName";s:15:"比勒費(fèi)爾德";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í)也很簡單,它說明的就是一些數(shù)據(jù)類型和結(jié)構(gòu)。
a:2說明這是個(gè)有兩個(gè)元素的數(shù)組(array);
i:0指序列索引;
a:4指有4個(gè)字段
s:8:"gameName"說明這是有8個(gè)字符的字符串(string)
實(shí)際開發(fā)中我們只將序列化后的數(shù)據(jù)進(jìn)行存儲(chǔ),并不要去關(guān)心存儲(chǔ)的格式和以及字段意思。如果要將序列化后的數(shù)據(jù)恢復(fù)成數(shù)組,則使用unserialize()函數(shù)即可。

print_r(unserialize($serialize)); 

以上代碼可以打印出數(shù)組。
JSON數(shù)據(jù)解析
我們知道,PHP操作JSON可以使用json_encode()和json_decode()兩個(gè)函數(shù)。json_encode()可以將數(shù)組轉(zhuǎn)換成json格式的文本數(shù)據(jù),它方便存儲(chǔ)和讀取,而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ì)看是鍵值對(duì)應(yīng),便于人工識(shí)別,而且關(guān)鍵是JSON格式的數(shù)據(jù)方便其他語種讀取并識(shí)別,所以有人說它是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ù)組序列化后是便于存儲(chǔ),而JSON格式的數(shù)據(jù)不僅便于存儲(chǔ)還能跟其他語言如javascript讀取。它們?cè)谛阅苌峡赡軙?huì)有細(xì)微區(qū)別,如果前后端交互使用比較多的話建議使用JSON,結(jié)合PHP、Javascript、JSON以及Ajax就可以完成強(qiáng)大的數(shù)據(jù)交互功能。

關(guān)于PHP的serialize序列化數(shù)據(jù)以及JSON格式化數(shù)據(jù)詳細(xì)分析就這么多,如果想了解更多的內(nèi)容請(qǐng)繼續(xù)關(guān)注。

相關(guān)文章

  • PHP創(chuàng)建文件,并向文件中寫入數(shù)據(jù),覆蓋,追加的實(shí)現(xiàn)代碼

    PHP創(chuàng)建文件,并向文件中寫入數(shù)據(jù),覆蓋,追加的實(shí)現(xiàn)代碼

    這篇文章主要介紹了PHP創(chuàng)建文件,并向文件中寫入數(shù)據(jù),覆蓋,追加的實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2016-03-03
  • PHP輸出XML到頁面的3種方法詳解

    PHP輸出XML到頁面的3種方法詳解

    本篇文章是對(duì)PHP輸出XML到頁面的3種方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • php5與php7的區(qū)別點(diǎn)總結(jié)

    php5與php7的區(qū)別點(diǎn)總結(jié)

    在本篇文章里小編給大家整理的是關(guān)于php5與php7的區(qū)別是什么的相關(guān)知識(shí)點(diǎn)內(nèi)容,有需要的朋友們學(xué)習(xí)下。
    2019-10-10
  • 100行PHP代碼實(shí)現(xiàn)socks5代理服務(wù)器

    100行PHP代碼實(shí)現(xiàn)socks5代理服務(wù)器

    這個(gè)例子說了in the real world, do something here to ensure clients not running are destroyed 但是,如何把不再運(yùn)行的連接銷毀卻沒有講。恩。我試了把$clients放到一個(gè)類里,把類傳給線程類,然后在線程類要結(jié)束時(shí)把$clients里對(duì)應(yīng)的連接給unset掉,無果。
    2016-04-04
  • 淺談PHP設(shè)計(jì)模式之門面模式Facade

    淺談PHP設(shè)計(jì)模式之門面模式Facade

    門面模式的最初目的并不是為了避免讓你閱讀復(fù)雜的 API 文檔,這只是一個(gè)附帶作用。其實(shí)它的本意是為了降低耦合性并且遵循 Demeter 定律。
    2021-05-05
  • php獲取網(wǎng)頁請(qǐng)求狀態(tài)程序示例

    php獲取網(wǎng)頁請(qǐng)求狀態(tài)程序示例

    對(duì)于網(wǎng)頁返回狀態(tài)代碼多數(shù)情況下我們的查看方法就是使用站長工具或ff瀏覽器等來查看,極少有人想到自己寫一個(gè)查看狀態(tài)代碼的功能,本文就此簡述php獲取網(wǎng)頁請(qǐng)求狀態(tài)程序示例,需要的朋友可以參考下
    2014-06-06
  • 備份mysql數(shù)據(jù)庫的php代碼(一個(gè)表一個(gè)文件)

    備份mysql數(shù)據(jù)庫的php代碼(一個(gè)表一個(gè)文件)

    用php實(shí)現(xiàn)的備份MySQL數(shù)據(jù)庫的代碼,需要的朋友可以參考下。
    2010-05-05
  • php操作SVN版本服務(wù)器類代碼

    php操作SVN版本服務(wù)器類代碼

    使用PHP完成SVN的操作,包括復(fù)制,查看列表,刪除,移動(dòng),創(chuàng)建目錄,查看diff,更新,合并,提交,獲取狀態(tài),獲取commit log,獲取當(dāng)前版本號(hào)操作。在svn 1.6.11版本中測(cè)試通過
    2011-11-11
  • PHP的pcntl多進(jìn)程用法實(shí)例

    PHP的pcntl多進(jìn)程用法實(shí)例

    這篇文章主要介紹了PHP的pcntl多進(jìn)程用法,實(shí)例分析了pcntl操作多進(jìn)程的使用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-03-03
  • 詳解JIT編譯器在PHP8中的工作原理

    詳解JIT編譯器在PHP8中的工作原理

    JIT是Just-In-Time 編譯的縮寫,是一種在運(yùn)行時(shí)將高級(jí)源代碼編譯成機(jī)器碼的技術(shù),JIT是PHP 8.0中最重要的新功能之一,JIT 編譯器的核心思想是將 PHP 源代碼分為熱代碼路徑和冷代碼路徑,本文給大家詳細(xì)介紹了JIT編譯器在PHP8中的工作原理,需要的朋友可以參考下
    2023-10-10

最新評(píng)論