JSON and PHP arrays

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

会被渲染为这样:

[
    ["431.940054495913"],
    {"1":"431.940054495913"}
]
为什么这两个数组渲染的结果不同?

很难理解正在被问什么。在我看来一切都很正常。 - Layke
他想知道为什么将键为“0”和键为“1”的元素转换为JSON时会有所不同。 - Paul Dixon
1个回答

17
任何可以渲染为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选项)


谢谢。我都尝试了,它们都解决了问题。好知道 :) - Fuzzy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接