从array_keys返回的键的顺序是否与输入数组中的顺序相同?

Han*_*etz 23 php

给定如下的关联数组,

$field_defaults = array(
  'id' => 0,
  'name' => 'new item',
  'desc' => '',
  'parent_id' => 0,
);
Run Code Online (Sandbox Code Playgroud)

我可以依赖array_keys()按照指定的顺序返回键吗?或者,更准确地说,由于PHP中的数组似乎具有稳定的顺序,根据这个答案,返回的键array_keys()是否与它们在输入数组中出现的顺序相同?该手册不给任何提示.

当我尝试这个时,他们似乎尊重原始秩序,但我希望能够依赖这种行为.

Jon*_*Jon 35

TL; DR:从理论上讲,你不能指望它; 出于实际目的IMO你可以.


由于文档不保证订购,从技术上讲,正确的答案是"不,你不能指望".

这是因为从理论上讲,开发人员可以选择保留自己在未来更改实施的选项,这样它就不再支持现有的订单(可能是为了提高性能,或者为了获得其他好处).

现在作为一个实际问题,我们知道当前的实现遵循排序 - PHP数组是有序容器(除了其他东西之外还有一个值的链接列表) - 这是你不会期望改变的.

如果确实如此,则更改将暗示数组的内部实现中的相应重大更改,并且反过来也可能会破坏许多其他代码.我不认为它会很快发生.

  • 仅供阅读本文的任何人参考,正如我们今天发现的那样 - 你**不能**指望这一点。它并不总是尊重顺序。 (3认同)
  • @Kyron 你能提供更多细节吗? (3认同)