【问题标题】:php array lookup timephp数组查找时间
【发布时间】:2012-02-02 14:19:35
【问题描述】:

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

【问题讨论】:

标签: php arrays data-structures hash map


【解决方案1】:

PHP 中的数组实际上是一个有序映射。地图是一种类型 将值与键相关联。这种类型针对几个进行了优化 不同的用途;它可以被视为一个数组、列表(向量)、哈希 表(地图的实现)、字典、集合、堆栈、 排队,可能还有更多。由于数组值可以是其他数组,因此树 和多维数组也是可能的。

实现实际上是某种HashTable

->http://php.net/manual/en/language.types.array.php
-> How is the PHP array implemented on the C level?

【讨论】:

  • 这真的不是我要找的答案。所以php决定在运行时(或字节码编译时)如何“处理”它?因为有序映射是平衡的二叉树 - 根据定义,它不能像哈希表那样具有 O(1) 查找时间
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-21
  • 2011-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-18
  • 1970-01-01
相关资源
最近更新 更多