我只是想我会梳理这个以找到答案: http://svn.php.net/viewvc/php/php-src/
但我找不到它。在C ++中,<map>
被实现为具有const键值的平衡二叉搜索树。这很好,你得到O(log n)
搜索,插入,删除等运行时。 O(n)
枚举时间。
我想知道的是PHP数组的底层数据结构。在PHP阵列上有一些SO帖子说“他们做的几乎完全相同,所以不要担心它!”。不是我追求的。它是O(1)
(哈希表)还是O(log n)
(平衡二叉树)查找? (例如)
如果有人可以帮助我或指出我正确的PHP C源文件,那将是非常棒的(虽然一点解释会很好 - 我真的很擅长C)。或者,如果您对PHP数组有很好的了解,那也很好 - 我正在尝试理解整个底层数据结构。
答案 0 :(得分:2)
PHP中的数组实际上是一个有序的映射。地图是一种类型 将值与键相关联。此类型针对多种进行了优化 不同用途;它可以被视为数组,列表(向量),哈希 table(地图的实现),字典,集合,堆栈, 队列,可能更多。由于数组值可以是其他数组,树 和多维数组也是可能的。
实现实际上是某种HashTable
。
- &GT; http://php.net/manual/en/language.types.array.php
- &GT; How is the PHP array implemented on the C level?