今天在写写代码的时候,前端找我,说我写的一个接口有可能有问题。导致前端的数据不能正常显示,我去看了一下,确实不能正常显示。问题的原因是本来前端循环遍历一个json里的数组,但是接下来的数据变成对象了。好,接下来上代码。
$arr = [ 0=>'a', 1=>'b', 2=>'c', 3=>'d', ]; $add = [ 5=>'e', 6=>'f', 7=>'g', ]; $list = []; // 业务方面需要将数据追加进去 array_push($list, $arr); array_push($list, $add);
echo '<pre>'; print_r($list);
代码没什么特别的,结果没有意外,当然是个二维数组,结果:
但是,我需要返回的是json格式的数据,代码:
$arr = [ 0=>'a', 1=>'b', 2=>'c', 3=>'d', ]; $add = [ 5=>'e', 6=>'f', 7=>'g', ]; $list = []; // 业务方面需要将数据追加进去 array_push($list, $arr); array_push($list, $add); echo '<pre>'; // print_r($list); var_dump(json_encode($list));
打印结果:
结果是,第二个数组变成了对象。最后发现最终的原因,是第二个数组的下标,不是从0开始的,才会导致第二个数组在转为json时,会变成对象。最后修改了第二组数据的下标,结果也都变成了正常的数组。