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"}"