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 表在出现键冲突时采用顺序表来弥补