1、问题重现
第一个例子:
$arr = [0 => 'a', 1 => 'b'];
var_dump(json_encode($arr));
输出:string(9) "["a","b"] 数字索引竟然消失了!
第二个例子:
$arr = ['0' => 'a', '1' => 'b'];
var_dump(json_encode($arr));
输出: string(9) "["a","b"] 数字索引竟然消失了!
第三个例子:
$arr = [0 => 'a', 2 => 'b'];
var_dump(json_encode($arr));
输出:string(17) "{"0":"a","2":"b"}" 正常
2、原因
如果数组存在数字索引,且数字索引是从0或者'0'开始且连续,就会丢失数字索引
3、解决方法
json_encode的第二个参数传入JSON_FORCE_OBJECT
$arr = [0 => 'a', 1 => 'b'];
var_dump(json_encode($arr, JSON_FORCE_OBJECT));
输出:string(17) "{"0":"a","1":"b"}"