浅谈PHP中的数组和JS中的数组
最近在做前后端对接的时候,遇到一个问题,前端要求返回的数据格式是左边的,但是我通过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处理后就会达到图一的结果。
以上