PHP如何跟踪关联数组中的顺序?

Evi*_*Elf 10 php associative-array

将新值推送到索引数组时

$array[] = 'new value';
Run Code Online (Sandbox Code Playgroud)

PHP文档解释了如何在[MAX_INDEX + 1]位置添加它.

将新值推送到关联数组时

$array['key'] = 'new value';
Run Code Online (Sandbox Code Playgroud)

它的工作方式相同,但我没有在文档中看到任何解释来确认它是如何或为什么这样做的.订单似乎在我的实施中是一致的,但我怎么知道订单将保持不变?有谁知道PHP如何在后端实现这一点?

n00*_*dle 1

PHP 中关联数组是如何实现的?可能会给你一些见解。

看来 PHP 数组本质上是哈希表,因此数组的顺序将保持不变,直到您重新排序(例如通过对数组进行排序)。

编辑:看来这被否决了,请允许我在下面的评论中明确包含我链接到的来源......

  • 很抱歉死灵术,但这个答案毫无意义。如果它是一个简单的哈希表,则条目的顺序应该基于每个键的哈希值,而不是插入的顺序。事实上,这就是哈希表在任何其他语言中的行为方式。然而 PHP 关联数组似乎可以跟踪插入的顺序。所以这个问题对我来说仍然悬而未决。它是如何做到的?可以依靠吗? (8认同)