四虎精品视频-四虎精品成人免费网站-四虎黄色网-四虎国产视频-国产免费91-国产蜜臀97一区二区三区

PHP中用hash實現的數組

php中使用最多的非Array莫屬了,那Array是如何實現的?在php內部Array通過一個hashtable來實現,其中使用鏈接法解決hash沖突的問題,這樣最壞情況下,查找Array元素的復雜度為O(N),最好則為1.
而其計算字符串hash值的方法如下,將源碼摘出來以供查備:
復制代碼 代碼如下:
static inline ulong zend_inline_hash_func(const char *arKey, uint nKeyLength)
{
register ulong hash = 5381;                                                   //此處初始值的設置有什么玄機么?
/* variant with the hash unrolled eight times */
for (; nKeyLength >= 8; nKeyLength -= 8) {                         //這種step=8的方式是為何?
hash = ((hash << 5) + hash) + *arKey++;
hash = ((hash << 5) + hash) + *arKey++;
hash = ((hash << 5) + hash) + *arKey++;
hash = ((hash << 5) + hash) + *arKey++;                         //比直接*33要快
hash = ((hash << 5) + hash) + *arKey++;
hash = ((hash << 5) + hash) + *arKey++;
hash = ((hash << 5) + hash) + *arKey++;
hash = ((hash << 5) + hash) + *arKey++;
}
switch (nKeyLength) {
case 7: hash = ((hash << 5) + hash) + *arKey++; /* fallthrough... */                             //此處是將剩余的字符hash
case 6: hash = ((hash << 5) + hash) + *arKey++; /* fallthrough... */
case 5: hash = ((hash << 5) + hash) + *arKey++; /* fallthrough... */
case 4: hash = ((hash << 5) + hash) + *arKey++; /* fallthrough... */
case 3: hash = ((hash << 5) + hash) + *arKey++; /* fallthrough... */
case 2: hash = ((hash << 5) + hash) + *arKey++; /* fallthrough... */                    
case 1: hash = ((hash << 5) + hash) + *arKey++; break;
case 0: break;
EMPTY_SWITCH_DEFAULT_CASE()
}
return hash;//返回hash值
}

ps:對于以下函數,仍有兩點不明:
hash = 5381設置的理由?
這種step=8的循環方式是為了效率么?

php技術PHP中用hash實現的數組,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 宋宇宁| 日本电影高校教师| 赌侠 1990 刘德华| 男女的隐私视频播放| 恐龙图片大全| 杰奎琳·卡瓦霍| 少年派2全集免费播放| 打电话简谱| 日韩女同性恋| 感冒难受的图片| 柳堡的故事演员表| 重温经典节目预告| 实验室火灾报警电铃响时应当| 鏖战鲁西南| 小淘气尼古拉| 山楂树之恋电影剧情简介| 笼中之怒| 奶粉罐回收多少钱一个| 毒鲨| 我在皇宫当巨巨| 挠脚心 | vk| 树屋轻调| 成家立业演员表| 语文选择性必修中册电子课本| 《缱绻少年人》| 新力量电影在线观看免费| 无耻之徒阿曼达| 高天妮| 端午节手抄报一年级| 纪念碑谷3| 新老澳门资料| 做菜的视频家常菜大全| 1988年英国的白蛇传说| 开创盛世电视剧全集免费观看| 小城故事多歌曲原唱| 好3| 我家大师兄太逆天了| 老外毛片| 浪荡女人米尔内1985| 建设工程监理规范最新版50319-2019 | 南口1937|