如何在PHP中实现关联数组?

2022-08-30 17:51:06

有人可以解释PHP如何实现关联数组吗?PHP 使用什么底层数据结构?PHP是否对密钥进行哈希处理并将其存储在某种哈希映射中?我很好奇,因为我想知道在插入和搜索键时,关联数组的性能如何。


答案 1

投票率最高的答案链接已断开,并且没有给出太多解释。

PHP是用C语言编写的,底层结构只是一个C数组。C 数组只是内存块。C 数组中的索引必须是连续的,不能有索引 0 和索引 1000 后面的索引。为了使关联数组键正常工作,在将它们添加到 C 数组之前,通过哈希函数将它们转换为正确的 C 索引。

为了获得完整的解释,我发现这个链接提供的信息要丰富得多。

http://nikic.github.io/2012/03/28/Understanding-PHPs-internal-array-implementation.html


答案 2

这是一个哈希表。类型声明和哈希函数在这里:
http://svn.php.net/viewvc/php/php-src/trunk/Zend/zend_hash.h?view=markup

spl中有一个轻量级数组和一个链表(标准php lib)