首頁 > 後端開發 > PHP問題 > php數組怎麼轉成js數組

php數組怎麼轉成js數組

藏色散人
發布: 2023-03-08 13:54:02
原創
2944 人瀏覽過

php數組轉成js數組的方法:1、使用foreach語句遍歷數組,語法「foreach($arr as $value){//循環體程式碼}」;2、在循環體中,透過json_encode()將陣列中每一個值進行json編碼,語法「json_encode($value)」;3、使用拼接字元「.」將每個編譯後的值後面加一個逗號;4、在所有值外面加上“[]”符號即可。

php數組怎麼轉成js數組

本文操作環境:Windows7系統、PHP8、Dell G3電腦。

JSON用法之將PHP數組轉JS數組,JS如何接收PHP數組

#先下載下面這個檔案(這是一段是別人寫出來專門解析json的程式碼),然後引入這個檔案!

    http://pan.baidu.com/s/1dD8qVr7

現在當我們需要用ajax與後台進行互動時,怎樣將php的陣列傳送到js檔案並且並js所識別?

    先看php文件,當我們取得到$arr這個陣列後

foreach ($arr as $value) {
  $json .= json_encode($value) . ',';
} 
echo '[' . substr($json,0,strlen($json) - 1) . ']';
登入後複製

json_encode()是將$arr的每一個值進行json編碼,然後我們想要輸出一個json的陣列,所以我們將每個編譯後的值後面加一個逗號並且最後在所有值外面加上'[]',這是json數組的格式,注意因為我們在將每一個值進行json編碼後都加上一個逗號在後面,這樣就導致最後所有值合併數組時多一個逗號,所有我們得用substr()函數將其最後一個逗號去掉!

    然後我們來看js檔案

當我們用arr接受到php檔案傳送的json陣列後

var json = JSON.parse(arr);
登入後複製

JSON是咱們開始下載那個文件中定義的一個對象,我們用它的parse方法將json數組轉換成js的數組!這是變數json接受到的是js數組所以直接不能印出來,你可以遍歷這個json數組或json[0]來輸出!

其實,說白了咱們將php陣列轉換成js陣列的想法就是利用json這個中間量來實現!當然你也可以只用php和js來實現數組的轉化,方法不只一種!

PHP陣列與Json之間的轉換

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

Json簡介

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

Json的具體形式是:

1.物件

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

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

程式碼範例:

<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>
登入後複製

2、陣列

陣列是值(value)的有序集合。一個陣列以「[」(左中括號)開始,「]」(右中括號)結束。值之間使用“,”(逗號)分隔。

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

程式碼範例:

<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>
登入後複製

注意:物件和陣列兩種形式在JS中的呼叫時不一樣啊,物件用「.」調用,陣列用下標[0]、[1]調用。也要注意傳遞Json串時string類型的值要用引號括起來。

PHP中將陣列轉換成Json

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

例如:

$array = array("name" => "Eric","age" => 23); 
echo json_encode($array);
登入後複製

程式會印出:

程式碼如下:

{“name”:”Eric”,”age”:23}

再看下面的例子:

$array = array(0 => "Eric", 1 => 23); 
echo json_encode($array);
登入後複製

程式會印出:["Eric",23]

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

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

【推薦:《PHP影片教學》】

以上是php數組怎麼轉成js數組的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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