php json轉(zhuǎn)數(shù)組是一個(gè)非常方便實(shí)現(xiàn)的因?yàn)閖son存儲的格式有規(guī)則的所以php也自帶了函數(shù)了,我們只需要使用對應(yīng)的函數(shù)就可以實(shí)現(xiàn)了,具體如下。
PHP中將數(shù)組轉(zhuǎn)變成Json
強(qiáng)大的PHP已經(jīng)提供了內(nèi)置函數(shù):json_encode() 和 json_decode()。很容易理解,json_encode()就是將PHP數(shù)組轉(zhuǎn)換成Json。相反,json_decode()就是將Json轉(zhuǎn)換成PHP數(shù)組。
例如,代碼如下:
- $array = array("name" => "Eric","age" => 23);
- echo json_encode($array);
程序?qū)⒋蛴〕?
{“name”:”Eric”,”age”:23}
再看下面的例子:
- $array = array(0 => "Eric", 1 => 23);
- echo json_encode($array);
程序?qū)⒋蛴〕?:["Eric",23]
以上兩個(gè)例子可以看出,如果PHP數(shù)組的鍵都是數(shù)字,那么json_encode()返回一個(gè)數(shù)組形式的Json,如果PHP數(shù)組的鍵全是字符串,那么json_encode()就會返回一個(gè)對象形式的Json,剛已經(jīng)說過,兩者在js中的調(diào)用是不同的.
事實(shí)上,只要在PHP數(shù)組的鍵中有一個(gè)字符串形式的鍵,那么json_encode()就會返回對象形式的Json,這是不正確的,因?yàn)?雖然在PHP代碼中不會出現(xiàn)錯(cuò)誤,但要是將這樣的Json傳給JS函數(shù),JS會將此Json當(dāng)做一個(gè)對象,而對象是不可能以數(shù)字作為屬性名的,也就是說JS 不知道這是什么:user.0.username(中間是數(shù)字零).
例子,代碼如下:
- $json_arr = array('WebName'=>'PHP網(wǎng)站開發(fā)教程網(wǎng)','WebSite'=>'http://www.survivalescaperooms.com');
- $php_json = json_encode($json_arr); //把php數(shù)組格式轉(zhuǎn)換成 json 格式的數(shù)據(jù)
- echo $php_json;
- $php_json = json_decode($php_json); //再把json格式的數(shù)據(jù)轉(zhuǎn)換成php數(shù)組
- print_r($php_json);
json數(shù)組
$json = '[{"id":"22","name":"33","descn":"44"}]'; //json格式的數(shù)組轉(zhuǎn)換成 php的數(shù)組
$arr = (Array)json_decode($json);
echo $arr[0]->id; //用對象的方式訪問
json轉(zhuǎn)換數(shù)據(jù)后面參數(shù)要帶ture,代碼如下:
- $a = <<<EOD
- {
- "scoreInfo": {
- "isB2cSeller": true,
- "noMark": false,
- "merchandisScore": "5.0",
- "merchandisTotal": 1,
- "width": 100
- },
- "rateListInfo": {
- "watershed": 100,
- "paginator": {
- "beginIndex": 1,
- "endIndex": 1,
- "firstPage": 1,
- "items": 1,
- "itemsPerPage": 8,
- "lastPage": 1,
- "length": 1,
- "offset": 0,
- "page": 1,
- "pages": 1
- },
- "rateList": [
- {
- "aliMallSeller": false,
- "anony": true,
- "auctionSku": "顏色分類:藍(lán)+黑;尺碼:36",
- "award": "",
- "b2CSeller": false,
- "dispalyRateLevel1": 0,
- "dispalyRateLevel2": 0,
- "dispalyRateSum": 0,
- "displayRatePic": "",
- "displayUserLink": "http://i.taobao.com/u/MTExNTE1Mjk5MQ==/tlive/taodan_list.htm?from=rate",
- "displayUserNick": "l***1",
- "displayUserNumId": 0,
- "displayUserRateLink": "http://rate.taobao.com/rate.htm?user_id=0&rater=1",
- "displayUserSeller": false,
- "fee dAppendedDO": null,
- "fromB2cMapping": false,
- "fromMall": false,
- "fromOnePai": false,
- "fromVirtualHurling": false,
- "gapDates": 0,
- "id": 63810867055,
- "rateContent": "賣家的服務(wù)態(tài)度真好,你家的鞋子更是超值,5分,還要在買別的款。",
- "rateDate": "2013.04.14 16:50:11",
- "rateResult": 1,
- "ratedUserNumId": 361988210,
- "reply": "",
- "shareInfo": null,
- "tag": "",
- "tradeClosingdate": null,
- "type": 0,
- "userVipLevel": 0
- }
- ],
- "showMore": 0
- },
- "babyRateJsonList": "uri: /detailRate.vm cacheTime: 2013-04-26 22:07:24 key: 9fb7a9a5d419da77465797ce1809367c cacheArea: 531 aliveTime: 14400 cacheType: PAGE_CACHE_PAGE_TYPE",
- "detailRate": "uri: /detailRate.vm cacheTime: 2013-04-26 22:07:24 key: 9fb7a9a5d419da77465797ce1809367c cacheArea: 531 aliveTime: 14400 cacheType: PAGE_CACHE_PAGE_TYPE"
- }
- EOD;
- var_dump(json_decode($a,1));
新聞熱點(diǎn)
疑難解答