多维数组json_encode之后产生对象而不是数组问题

Posted 北方的刀郎

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多维数组json_encode之后产生对象而不是数组问题相关的知识,希望对你有一定的参考价值。

json_encode ,对于数字下标不连续下标的数组,会变编译json 对象。连续的下标数组会变异成js数组。这点要注意。不然编译出的数据,前端处理可能会出错。

//unset后,不连续,json_encode会变异成对象,连续的会编译成数组

$arr = array(
0=>array('name'=>'张三','age'=>'120'),
1=>array('name'=>'李四','age'=>'111'),
2=>array('name'=>'王五','age'=>'233')
);
 
 
$res = json_encode($arr);
echo "<script>console.log('$res');</script>";

 结果:

前端判断 .length 为 3,

$arr = array(
	0=>array('name'=>'张三','age'=>'120'),
	1=>array('name'=>'李四','age'=>'111'),
	2=>array('name'=>'王五','age'=>'233')
);
 
unset($arr[1]); 
$res = json_encode($arr);
echo "<script>console.log('$res');</script>";

结果:

 

前端判断 .length 为 undefined , 这样业务逻辑就容易错了。以后注意这细节。

以上是关于多维数组json_encode之后产生对象而不是数组问题的主要内容,如果未能解决你的问题,请参考以下文章

多维数组json_encode之后产生对象而不是数组问题

PHP json_encode将行作为对象而不是数组返回[重复]

多维数组上的 json_encode() - 带有字符串键

json_encode PHP 数组作为 JSON 数组而不是 JSON 对象

json_encode PHP 数组作为 JSON 数组而不是 JSON 对象

PHP - 递归数组到对象?