淺談PHP中的數組和JS中的數組
阿新 • • 發佈:2017-07-26
例如 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中的數組