1. 程式人生 > >淺談PHP中的數組和JS中的數組

淺談PHP中的數組和JS中的數組

例如 val pan exe png strong name 我們 sso

最近在做前後端對接的時候,遇到一個問題,前端要求返回的數據格式是左邊的,但是我通過json_encode返回到的數據格式是右邊的 註意:數據格式從"[]"(數組)變成了"{}"(對象)

技術分享技術分享

google了下,發現:javascript不支持關聯數組 , PHP中索引數組轉換成json是數組([]),php關聯數組轉換成json是對象( {} ) ,所以如果是關聯數組的話,需要對數組做一些處理才行

PHP中的數組:索引數組和關聯數組

PHP支持兩種數組,一種是只保存"值"(value)的索引數組(indexed array),另一種是保存"名值對"(name/value)的關聯數組(associative array)。

由於javascript不支持關聯數組,所以json_encode()只將索引數組(indexed array)轉為數組格式,而將關聯數組(associative array)轉為對象格式。

例如:

//1、索引數組
$arr = Array(‘one‘, ‘two‘, ‘three‘);
echo json_encode($arr);

//返回值:
["one","two","three"] 
//2、關聯數組
$arr = Array(‘1‘=>‘one‘, ‘2‘=>‘two‘, ‘3‘=>‘three‘);
echo json_encode($arr);

//返回結果:
{"1":"one","2":"two","3":"three"} 

因此,如果需要達到圖一的結果,需要對我們的數組中的關聯數組進行處理(轉為索引數組)

推薦一個函數:

array_values():返回數組的所有值(非鍵名)
$a=array("Name"=>"Bill","Age"=>"60","Country"=>"USA");
print_r(array_values($a));

//返回結果

Array ( [0] => Bill [1] => 60 [2] => USA )

最後再用 json_encode處理後就會達到圖一的結果。

以上

淺談PHP中的數組和JS中的數組