您可以将布尔值传递给json_decode以返回数组而不是对象
json_decode('{"foo", "bar", "baz"}', true); // array(0 => 'foo', 1 => 'bar', 2 => 'baz')
Run Code Online (Sandbox Code Playgroud)
我的问题是这个.解析对象文字时,这是否保证了项目的顺序将被保留?我知道JSON对象属性不是有序的,但PHP数组是.我在PHP手册中的任何地方都找不到明确解决的问题.它可能在谨慎方面付出代价,但我想尽可能避免包括某种"索引"子属性.
在这种情况下,当您将 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)