首頁 > 後端開發 > php教程 > PHP數組與Json之間的轉換

PHP數組與Json之間的轉換

WBOY
發布: 2016-08-08 09:27:34
原創
1306 人瀏覽過

之所以要用到Json,很多時候是因為使用ajax物件時,程式與JS函數之間的資料互動。因為JS不認識PHP中的數組,PHP也不認識JS中的數組或物件。 Json很好的解決了這個問題。

Json簡介

JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式。它基於JavaScript的子集,這意味著JavaScript可以直接讀取Json,非常方便。

Json的具體形式是: 
1.物件

物件是一個無序的「『名稱/值』對」集合。一個物件以「{」(左括號)開始,「}」(右括號)結束。每個「名稱」後面跟著一個「:」(冒號);「『名稱/值』 對」之間使用「,」(逗號)分隔。

例如: {“username”: “Eric”,”age”:23,”sex”: “man”}

代碼範例:

?View Code JAVASCRIPT

<script type="text/javascript">   function getUser()
{
    var   user = {
    "username": "Eric",
    "age":23,
    "family": {"mother":"Marry","father":"Alon","brother":"Tom"}
    };   alert( user.username );   alert( user.age );   alert(user.family.brother);
}   getUser();   </script>
登入後複製

?

View Code JAVASCRIPT

<script type="text/javascript">   function getArray()   {   var arr = ["Jarry",23, ["www.xiaophper.com","wxyh_999@126.com"]];   alert(arr[0]);   alert(arr[1]);   alert(arr[2][0]);   alert(arr[2][1]);   }   getArray();   </script>
登入後複製
值(value)的有序集合。一個陣列以「[」(左中括號)開始,「]」(右中括號)結束。值之間使用“,”(逗號)分隔。

例如: ["Eric",23, "man"]

程式碼範例:

?

View Code PHP

$array = array("name" => "Eric","age" => 23);   echo json_encode($array);
登入後複製
注意:物件和陣列兩種形式在JS中的呼叫時不一樣啊用“.”調用,數組用下標[0]、[1]調用。也要注意傳遞Json串時string類型的值要用引號括起來。


PHP中將陣列轉換成Json 

強大的PHP已經提供了內建函數:json_encode() 和 json_decode()。很容易理解,json_encode()就是將PHP陣列轉換成Json。相反,json_decode()就是將Json轉換成PHP數組。

例如:

?

View Code PHP

$array = array(0 => "Eric", 1 => 23);   echo json_encode($array);
登入後複製
程式會印出:  {「name」:」Eric”,」age」:23}

再看PHP

rrreee程式會印出:["Eric",23] 以上兩個例子可以看出,如果PHP數組的鍵都是數字,那麼json_encode()傳回一個數組形式的Json,如果PHP數組的鍵全是字串。那麼json_encode()就會回傳一個物件形式的Json。剛已經說過。兩者在js中的呼叫是不同的。 

事實上,只要在PHP陣列的鍵中有一個字串形式的鍵,那麼json_encode()就會傳回物件形式的Json。這是不正確的。因為,雖然在PHP程式碼中不會出現錯誤,但如果將這樣的Json傳給JS函數,JS會將此Json當做一個對象,而對像是不可能以數字作為屬性名的。也就是說JS 不知道這是什麼 : user.0.username  (中間是數字零)


轉載自:http://www.cnblogs.com/xmphoenix/archive/2011/05/26/2057963.html

以上就介紹了PHP陣列和Json之間的轉換,包含了面向的內容,希望對PHP教學有興趣的朋友有幫助。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板