[PHP]json_encode丟失數字索引

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

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章