[PHP] PHP数组的哈希表实现
2023-02-18 15:37:01 时间
1.HashTable中的有个字段记录元素个数,每插入一个元素或者unset删掉元素时会更新这个字段。这样在进行count()函数统计数组元素个数时就能快速的返回。
2.在PHP中可以使用字符串或者数字作为数组的索引 , 数字索引直接就可以作为哈希表的索引,数字也无需进行哈希处理 , 在PHP数组中如果索引字符串可以被转换成数字也会被转换成数字索引。所以在PHP中例如'10','11'这类的字符索引和数字索引10, 11没有区别。
3.数组在插入元素的时候 , 会把字符串key计算出一个索引值 , 如果索引值中有数据 , 就在该索引位置存放一个链表 , 把新元素插到链表头上
但是, 元素bucket中存放着整个哈希表的链表指针 , 整个哈希表的链表顺序是按照插入的顺序进行链接的, 注意下图的红线 , 因此在foreach遍历时 , 会按照插入顺序进行输出
4.当哈希表设置的数组个数满了时 , 再插入元素会进行数组扩容 , 有个二倍扩容的机制 , 并且需要把原先里面的元素从新哈希到新的数组里 .
相关文章
- abp(net core)+easyui+efcore实现仓储管理系统——展现层实现增删改查之控制器(六)
- abp(net core)+easyui+efcore实现仓储管理系统——创建应用服务(五)
- abp(net core)+easyui+efcore实现仓储管理系统——定义仓储并实现 (四)
- abp(net core)+easyui+efcore实现仓储管理系统——领域层创建实体(三)
- abp(net core)+easyui+efcore实现仓储管理系统——解决方案介绍(二)
- abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一)
- 使用 ASP.NET Core MVC 创建 Web API——响应数据的内容协商(七)
- 使用 ASP.NET Core MVC 创建 Web API(六)
- 使用 ASP.NET Core MVC 创建 Web API(五)
- 使用 ASP.NET Core MVC 创建 Web API(四)
- 使用 ASP.NET Core MVC 创建 Web API(三)
- 使用 ASP.NET Core MVC 创建 Web API(二)
- 使用 ASP.NET Core MVC 创建 Web API(一)
- 学习ASP.NET Core Razor 编程系列十九——分页
- 学习ASP.NET Core Razor 编程系列十八——并发解决方案
- 学习ASP.NET Core Razor 编程系列十七——分组
- 学习ASP.NET Core Razor 编程系列十六——排序
- 学习ASP.NET Core Razor 编程系列十五——文件上传功能(三)
- 学习ASP.NET Core Razor 编程系列十四——文件上传功能(二)
- 学习ASP.NET Core Razor 编程系列十三——文件上传功能(一)