PHP json_decode()会始终保留JSON数组的数组顺序吗?


Will PHP json_decode() always preserve the array order from a JSON array?

字符串

 ["first","second","third"]

始终保持数组顺序,结果为PHP数组

array('first','second','third');

使用json_decode() ?我意识到答案是NO对象,但我问关于一个字符串表示数组作为输入。

是。数组是按定义排序的,JSON保留了这一点。

JSON规范说:

数组结构是一对包围零个或多个值的方括号符号。这些值是以逗号分隔。这些值的顺序很重要。

最后一句话暗示改变顺序的JSON编码器或解码器不符合规范。我在PHP文档中找不到任何明确表示它遵守此要求的内容,但我认为可以假设,因为它声称要实现JSON。

是,我们将遵守订单。

或者您可以使用强制转换数组到对象,因为对象变量的顺序不会被修改json_encode((object)$arr)