php数组查找时间

时间:2012-01-04 17:13:33

标签: php arrays data-structures hash map

我只是想我会梳理这个以找到答案: 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数组有很好的了解,那也很好 - 我正在尝试理解整个底层数据结构。

1 个答案:

答案 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?