php数组底层实现原理是什么

这篇文章主要介绍php数组底层实现原理是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

创新互联建站主营土默特左旗网站建设的网络公司,主营网站建设方案,App定制开发,土默特左旗h5成都微信小程序搭建,土默特左旗网站营销推广欢迎土默特左旗等地区企业咨询

php 数组底层实现原理

1、底层实现是通过散列表(hash table) + 双向链表(解决hash冲突)

  • hashtable:将不同的关键字(key)通过映射函数计算得到散列值(Bucket->h) 从而直接索引到对应的Bucket

  • hash表保存当前循环的指针,所以foreach 比for更快

  • Bucket:保存数组元素的key和value,以及散列值h

2、如何保证有序性

  • 1. 散列函数和元素数组(Bucket)中间添加一层大小和存储元素数组相同的映射表。

  • 2. 用于存储元素在实际存储数组中的下标

  • 3. 元素按照映射表的先后顺序插入实际存储数组中

  • 4. 映射表只是原理上的思路,实际上并不会有实际的映射表,而是初始化的时候分配Bucket内存的同时,还会分配相同数量的 uint32_t 大小的空间,然后将 arData 偏移到存储元素数组的位置。

3、解决hash重复(php使用的链表法):

  • 1. 链表法:不同关键字指向同一个单元时,使用链表保存关键字(遍历链表匹配key)

  • 2. 开放寻址法:当关键字指向已经存在数据的单元的时候,继续寻找其他单元,直到找到可用单元(占用其他单元位置,更容易出现hash冲突,性能下降)

4、基础知识

  • 链表:队列、栈、双向链表、

  • 链表    :元素 + 指向下一元素的指针

  • 双向链表:指向上一元素的指针 + 元素 + 指向下一元素的指针

以上是“php数组底层实现原理是什么”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!


新闻标题:php数组底层实现原理是什么
当前URL:http://scyanting.com/article/iggcgd.html