在PHP語言中使用JSON

前幾天半开,我才知道有一種簡化的數(shù)據(jù)交換格式隔披,叫做yaml。
我翻了一遍它的文檔寂拆,看懂的地方不多奢米,但是有一句話令我茅塞頓開抓韩。
它說,從結(jié)構(gòu)上看鬓长,所有的數(shù)據(jù)(data)最終都可以分解成三種類型

第一種類型是標(biāo)量(scalar)谒拴,也就是一個單獨的字符串(string)或數(shù)字(numbers),比如"北京"這個單獨的詞涉波。
第二種類型是序列(sequence)英上,也就是若干個相關(guān)的數(shù)據(jù)按照一定順序并列在一起,又叫做數(shù)組(array)或列表(List)啤覆,比如"北京苍日,上海"。
第三種類型是映射(mapping)窗声,也就是一個名/值對(Name/value)相恃,即數(shù)據(jù)有一個名稱,還有一個與之相對應(yīng)的值笨觅,這又稱作散列(hash)或字典(dictionary)拦耐,比如"首都:北京"。

我恍然大悟屋摇,數(shù)據(jù)構(gòu)成的最小單位原來如此簡單揩魂!難怪在編程語言中,只要有了數(shù)組(array)和對象(object)就能夠儲存一切數(shù)據(jù)了炮温。

我馬上想到了json火脉。
21世紀(jì)初,Douglas Crockford尋找一種簡便的數(shù)據(jù)交換格式柒啤,能夠在服務(wù)器之間交換數(shù)據(jù)倦挂。當(dāng)時通用的數(shù)據(jù)交換語言是XML,但是Douglas Crockford覺得XML的生成和解析都太麻煩担巩,所以他提出了一種簡化格式方援,也就是Json。
Json的規(guī)格非常簡單涛癌,只用一個頁面幾百個字就能說清楚犯戏,而且Douglas Crockford聲稱這個規(guī)格永遠(yuǎn)不必升級,因為該規(guī)定的都規(guī)定了拳话。

1) 并列的數(shù)據(jù)之間用逗號(", ")分隔先匪。
2) 映射用冒號(": ")表示。
3) 并列數(shù)據(jù)的集合(數(shù)組)用方括號("[]")表示弃衍。
4) 映射的集合(對象)用大括號("{}")表示呀非。

上面四條規(guī)則,就是Json格式的所有內(nèi)容。
比如岸裙,下面這句話:
"北京市的面積為16800平方公里猖败,常住人口1600萬人。上海市的面積為6400平方公里降允,常住人口1800萬恩闻。"
寫成json格式就是這樣:

[
  {"城市":"北京","面積":16800,"人口":1600},
  {"城市":"上海","面積":6400,"人口":1800}
]

如果事先知道數(shù)據(jù)的結(jié)構(gòu),上面的寫法還可以進一步簡化:

[
  ["北京",16800,1600],
  ["上海",6400,1800]
]

由此可以看到拟糕,json非常易學(xué)易用判呕。所以,在短短幾年中送滞,它就取代xml侠草,成為了互聯(lián)網(wǎng)上最受歡迎的數(shù)據(jù)交換格式。
我猜想犁嗅,Douglas Crockford一定事先就知道边涕,數(shù)據(jù)結(jié)構(gòu)可以簡化成三種形式,否則怎么可能將json定義得如此精煉呢褂微!

學(xué)習(xí)javascript的時候功蜓,我曾經(jīng)一度搞不清楚"數(shù)組"(array)和"對象"(object)的根本區(qū)別在哪里,兩者都可以用來表示數(shù)據(jù)的集合宠蚂。
比如有一個數(shù)組a=[1,2,3,4]式撼,還有一個對象a={0:1,1:2,2:3,3:4},然后你運行alert(a[1])求厕,兩種情況下的運行結(jié)果是相同的著隆!這就是說,數(shù)據(jù)集合既可以用數(shù)組表示呀癣,也可以用對象表示美浦,那么我到底該用哪一種呢?
我后來才知道项栏,數(shù)組表示有序數(shù)據(jù)的集合浦辨,而對象表示無序數(shù)據(jù)的集合。如果數(shù)據(jù)的順序很重要沼沈,就用數(shù)組流酬,否則就用對象。

當(dāng)然列另,數(shù)組和對象的另一個區(qū)別是康吵,數(shù)組的數(shù)據(jù)沒有"名稱"(name),對象的數(shù)據(jù)有"名稱"(name)访递。
但是問題是,很多編程語言中同辣,都有一種叫做"關(guān)聯(lián)數(shù)組"(associative array)的東西拷姿。這種數(shù)組中的數(shù)據(jù)是有名稱的惭载。
比如在javascript中,可以這樣定義一個對象:

var a={"城市":"北京","面積":16800,"人口":1600};

但是响巢,也可以定義成一個關(guān)聯(lián)數(shù)組:

a["城市"]="北京";
a["面積"]=16800;
a["人口"]=1600;

這起初也加劇了我對數(shù)組和對象的混淆描滔,后來才明白,在Javascript語言中踪古,關(guān)聯(lián)數(shù)組就是對象含长,對象就是關(guān)聯(lián)數(shù)組。這一點與php語言完全不同伏穆,在php中拘泞,關(guān)聯(lián)數(shù)組也是數(shù)組。
比如運行下面這段javascript:

var a=[1,2,3,4];
a['foo']='Hello World';
alert(a.length);

最后的結(jié)果是4枕扫,也就是說陪腌,數(shù)組a的元素個數(shù)是4個。
但是烟瞧,運行同樣內(nèi)容的php代碼就不一樣了:

<?php
$a=array(1,2,3,4);
$a["foo"]="Hello world";
echo count($a);
?>

最后的結(jié)果是5诗鸭,也就是說,數(shù)組a的元素個數(shù)是5個参滴。
轉(zhuǎn):http://www.ruanyifeng.com/blog/2011/01/json_in_php.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末强岸,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子砾赔,更是在濱河造成了極大的恐慌蝌箍,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件过蹂,死亡現(xiàn)場離奇詭異十绑,居然都是意外死亡,警方通過查閱死者的電腦和手機酷勺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進店門本橙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人脆诉,你說我怎么就攤上這事甚亭。” “怎么了击胜?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵亏狰,是天一觀的道長。 經(jīng)常有香客問我偶摔,道長暇唾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮策州,結(jié)果婚禮上瘸味,老公的妹妹穿的比我還像新娘。我一直安慰自己够挂,他們只是感情好旁仿,可當(dāng)我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著孽糖,像睡著了一般枯冈。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上办悟,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天尘奏,我揣著相機與錄音,去河邊找鬼誉尖。 笑死罪既,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的铡恕。 我是一名探鬼主播琢感,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼探熔!你這毒婦竟也來了驹针?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤诀艰,失蹤者是張志新(化名)和其女友劉穎柬甥,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體其垄,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡苛蒲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了绿满。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片臂外。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖喇颁,靈堂內(nèi)的尸體忽然破棺而出漏健,到底是詐尸還是另有隱情,我是刑警寧澤橘霎,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布蔫浆,位于F島的核電站,受9級特大地震影響姐叁,放射性物質(zhì)發(fā)生泄漏瓦盛。R本人自食惡果不足惜洗显,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望谭溉。 院中可真熱鬧墙懂,春花似錦、人聲如沸扮念。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽柜与。三九已至,卻和暖如春嵌灰,著一層夾襖步出監(jiān)牢的瞬間弄匕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工沽瞭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留迁匠,地道東北人。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓驹溃,卻偏偏與公主長得像城丧,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子豌鹤,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容