php json_decode 的一个bug

php 解析 json 的函数 json_decode 使用的时候会遇到的bug
$arr = array(
12 => array("test"),
11 => array("link"),
);
$arr = json_encode($arr);

这样解析的时候,如果使用json_decode($arr, true)将json还原成为一个数组的时候, 12 => array('test') 就会丢失,结果会变成
array(
11 => array("link"),
);

这个bug可以概述为如果大的整数下标在小整数下标之前,在decode时候,前面大的会丢失,如果调整了顺序,就不会出现这种情况,比如上面
$arr = array(
11 => array("link"),
12 => array("test"),
);
就不会出现问题了。
当然,还有另外一种解决办法,就是去掉true,变成$arr = json_decode($arr);转化称为一个对象,结果就对了

Leave a comment

Your email address will not be published.

*