日期:2014-05-17  浏览次数:20401 次

PHP的array是真正的数组吗
我看PHP语法中,数组的下标除了是数字外同样可以有类似哈希的key。那么PHP中的数组对象是不是不是真正的数据结构中的ARRAY。同时,但我设定了KEY时是不是就是可以当作HASH去使用,读取的时间复杂度是不是O(1)的?

------解决方案--------------------
在PHP中, 数组是用一种HASH结构(HashTable)来实现的, PHP使用了一些机制, 使得可以在O(1)的时间复杂度下实现数组的增删, 并同时支持线性遍历和随机访问.
------解决方案--------------------
探讨

不是,他是一个链表

------解决方案--------------------
PHP的数组Array是列表List,散列表/关联数组/字典Hashtable的聚合体。
既然array具有hashtable的性质 那么通过key值读取,他的时间复杂度当然是O(1)的!
------解决方案--------------------
如果不是链表,那你如何解释一下函数
reset、prev、next、end

又,一般说 hash 表的时间复杂度是O(1)
这是理论上的,它假定键足够长
但实际应用时,键冲突是必然存在的。 hash 表在出现键冲突时采用顺序表来弥补