Hash Table是PHP的核心,这话一点都不过分.
PHP的数组,关联数组,对象属性,函数表,符号表,等等都是用HashTable来做为容器的....PHP的HashTable采用的拉链法来解决冲突, 这个自不用多说, 我今天主要关注的就是PHP的Hash算法, 和这个算法本身透露出来的一些思想....PHP的Hash采用的是目前最为普遍的DJBX33A (Daniel J....算法的核心思想就是:
hash(i) = hash(i-1) * 33 + str[i]
在zend_hash.h中,我们可以找到在PHP中的这个算法:
static inline ulong...首先, 最不一样的就是, PHP中并没有使用直接乘33, 而是采用了:
hash << 5 + hash
这样当然会比用乘快了.