JSON和PHP数组

Fuz*_*zzy 14 php arrays json object

json_encode(array(
    array(0 => "431.940054495913"),
    array(1 => "431.940054495913"),
));
Run Code Online (Sandbox Code Playgroud)

渲染如下:

[
    ["431.940054495913"],
    {"1":"431.940054495913"}
]
Run Code Online (Sandbox Code Playgroud)

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

Arn*_*anc 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"]
    
    Run Code Online (Sandbox Code Playgroud)
  • 或者,您可以将PHP数组转换为PHP对象:

    json_encode( (object) array(0 => "431.940054495913"));
    // {"0": "431.940054495913"}
    
    Run Code Online (Sandbox Code Playgroud)

    (如果您不想将每个数组渲染为对象或者您没有JSON_FORCE_OBJECT)