PHP中的json_decode是否保证在返回数组时保留元素的排序?

Mar*_*rco 7 php sorting json

您可以将布尔值传递给json_decode以返回数组而不是对象

json_decode('{"foo", "bar", "baz"}', true);  // array(0 => 'foo', 1 => 'bar', 2 => 'baz')
Run Code Online (Sandbox Code Playgroud)

我的问题是这个.解析对象文字时,这是否保证了项目的顺序将被保留?我知道JSON对象属性不是有序的,但PHP数组是.我在PHP手册中的任何地方都找不到明确解决的问题.它可能在谨慎方面付出代价,但我想尽可能避免包括某种"索引"子属性.

tj1*_*111 4

在这种情况下,当您将 JSON 传递给 PHP 时使用数组不是更有意义吗?如果 JSON 中没有任何对象键(在 PHP 中成为关联数组键),只需将其作为数组发送。这样你就可以保证它们在 PHP 中的顺序与在 javascript 中的顺序相同。

json_decode('{["foo", "bar", "baz"]}');
json_decode('["foo", "bar", "baz"]'); //I think this would work
Run Code Online (Sandbox Code Playgroud)

如果您需要关联数组(这就是您将第二个参数作为 传递的原因true),则必须想出某种方法来在传递时维持它们的顺序。解码后,您必须对结果数组进行一些后处理,以按照您想要的方式格式化它。

$json = '{[ {"key" : "val"}, {"key" : "val"} ]}';
json_decode($json, true);
Run Code Online (Sandbox Code Playgroud)