JSON and PHP arrays


JSON and PHP arrays

json_encode(array(
    array(0 => "431.940054495913"),
    array(1 => "431.940054495913"),
));

呈现如下:

[
    ["431.940054495913"],
    {"1":"431.940054495913"}
]

为什么两个数组呈现不同?

任何可以呈现为JSON数组的PHP数组将呈现为JSON数组;任何只有从0开始的顺序数字键的PHP数组将呈现为JSON数组。

第一个数组是这样的:array(0 => "431.940054495913") .

如何修复

  • JSON_FORCE_OBJECT标志将把所有PHP数组呈现为JSON对象

    json_encode(array(0 => "431.940054495913"), JSON_FORCE_OBJECT);
    // {"0": "431.940054495913"}
    json_encode(array(0 => "431.940054495913"));
    // ["431.940054495913"]
    
  • 或者,您可以将PHP数组转换为PHP对象:

    json_encode( (object) array(0 => "431.940054495913"));
    // {"0": "431.940054495913"}
    

    (如果你不想把每个数组都渲染为对象,或者如果你没有JSON_FORCE_OBJECT)