php 数组底层实现原理
人总有一死,不是穷死就是心死。
首先,我们还是先了解下相关的数据结构
哈希表
哈希表,顾名思义,即将不同的关键字映射到不同单元的一种数据结构。而将不同关键字映射到不同单元的方法就叫做哈希函数。
理想情况下,经过哈希函数处理,关键字和单元是会进行一一对应的;但是如果关键字值足够多的情况下,就容易出现多个关键字映射到同一单元的情况,即出现哈希冲突。
哈希冲突如何解决
链表
链表,就是由不同的链表节点组成的一种数据结构。
链表分为很多种类型,常用的数据结构包括:队列,栈,双向链表等。
链表节点一般由元素+指向下一节点的指针组成。而双向链表,顾名思义,则是由指向上一节点的指针+元素+指向下一节点的指针组成。
php数组
php解决哈希冲突的方式是使用了链接法,
所以php数组是由哈希表+链表实现,准确来说,是由哈希表+双向链表实现。
变量的符号表,函数列表等都是用哈希表来存储的