国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 編程 > PHP > 正文

php哈希表及數組的介紹(附代碼)

2020-03-22 20:10:24
字體:
來源:轉載
供稿:網友
本篇文章給大家帶來的內容是關于php哈希表及數組的介紹(附代碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

數組是PHPer最常用的數據類型,同時php容易上手也得益于其強大的數組,但是數組在php中是如何實現的呢?

首先,我們還是先了解下相關的數據結構,為下面的內容打好基礎

哈希表

哈希表,顧名思義,即將不同的關鍵字映射到不同單元的一種數據結構。而將不同關鍵字映射到不同單元的方法就叫做哈希函數

理想情況下,經過哈希函數處理,關鍵字和單元是會進行一一對應的;但是如果關鍵字值足夠多的情況下,就容易出現多個關鍵字映射到同一單元的情況,即出現哈希沖突

哈希沖突的解決方案,要么使用鏈接法,要么使用開放尋址法

鏈接法
即當不同的關鍵字映射到同一單元時,在同一單元內使用鏈表來保存這些關鍵字

開放尋址法
即當插入數據時,如果發現關鍵字被映射到的單元存在數據了,說明發生了沖突,就繼續尋找下一個單元,直到找到可用單元為止

而因為開放尋址法方案屬于占用其他關鍵字映射單元的位置,所以后續的關鍵字更容易出現哈希沖突,因此容易出現性能下降

鏈表

既然上面提到了鏈表,這里我們簡單聊一下鏈表的基礎知識。鏈表分為很多種類型,常用的數據結構包括:隊列,棧,雙向鏈表等

鏈表,就是由不同的鏈表節點組成的一種數據結構。鏈表節點一般由元素+指向下一節點的指針組成。而雙向鏈表,顧名思義,則是由指向上一節點的指針+元素+指向下一節點的指針組成

對于數據結構的內容,我們不過多展開,我們之后會有專門的內容去詳細介紹數據結構

php數組

php解決哈希沖突的方式是使用了鏈接法,所以php數組是由哈希表+鏈表實現,準確來說,是由哈希表+雙向鏈表實現

內部結構-哈希表

HashTable結構體主要用來存放哈希表的基本信息

typedef struct _hashtable {  uint nTableSize; // hash Bucket的大小,即哈希表的容量,最小為8,以2x增長。 uint nTableMask; // nTableSize-1 , 索引取值的優化 uint nNumOfElements; // hash Bucket中當前存在的元素個數,count()函數會直接返回此值  ulong nNextFreeElement; // 下一個可使用的數字鍵值 Bucket *pInternalPointer; // 當前遍歷的指針(foreach比for快的原因之一) Bucket *pListHead; // 存儲整個哈希表的頭元素指針 Bucket *pListTail; // 存儲整個哈希表的尾元素指針 Bucket **arBuckets; // 存儲hash數組 dtor_func_t pDestructor; // 在刪除元素時執行的回調函數,用于資源的釋放 zend_bool persistent; //指出了Bucket內存分配的方式。如果persisient為TRUE,則使用操作系統本身的內存分配函數為Bucket分配內存,否則使用PHP的內存分配函數。 unsigned char nApplyCount; // 標記當前hash Bucket被遞歸訪問的次數(防止多次遞歸) zend_bool bApplyProtection;// 標記當前hash桶允許不允許多次訪問,不允許時,最多只能遞歸3次#if ZEND_DEBUG int inconsistent;#endif} HashTable;

Bucket結構體則用于保存數據的具體內容

typedef struct bucket { ulong h; // 對char *key進行hash后的值,或者是用戶指定的數字索引值 uint nKeyLength; // hash關鍵字的長度,如果數組索引為數字,此值為0 void *pData; // 指向html' target='_blank'>value,一般是用戶數據的副本,如果是指針數據,則指向pDataPtr void *pDataPtr; // 如果是指針數據,此值會指向真正的value,同時上面pData會指向此值 struct bucket *pListNext; // 指向整個哈希表的該單元的下一個元素 struct bucket *pListLast; // 指向整個哈希表的該單元的上一個元素 struct bucket *pNext; // 指向由于哈希沖突導致存放在同一個單元的鏈表中的下一個元素 struct bucket *pLast; // 指向由于哈希沖突導致存放在同一個單元的鏈表中的上一個元素 // 保存當前值所對于的key字符串,這個字段只能定義在最后,實現變長結構體 char arKey[1]; } Bucket;

其中Bucket結構體內有指向用戶數據的pData元素,其實是指向了之前我們介紹的變量zval結構體,這也是為什么當創建數組時,會出現數組元素+1的變量容器。

哈希表內部結構關系圖

1186452269-5438aa0f0122e_articlex.png

注:圖片來源于網絡

從上圖我們可以看出,Bucket在存放數據的時候,如果存在哈希沖突,則將多個關鍵字映射到鏈表中,由此組成了雙向鏈表

總結

今天,我們以數組作為切入點,簡單了解了下基本的數據結構:哈希表和鏈表;并且了解了數組的底層實現,即哈希表+雙向鏈表。其實哈希表作為php中最重要的數據結構,用處很廣。

【相關推薦:PHP視頻教程】

以上就是php哈希表及數組的介紹(附代碼)的詳細內容,PHP教程

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
国产精品午夜久久久久久| 国产尤物一区二区三区| 亚洲精品天堂在线观看| 久热免费在线视频| 超碰在线中文| 国产视频97| 黄污在线观看| 尤物在线视频观看| 国产精品臀控福利在线观看| 精品一区二区在线欧美| 国产免费永久在线观看| 色吊丝av中文字幕| 精精国产xxxx视频在线中文版| 国产女王在线**视频| 亚洲精品影视在线| 国产视频三级在线观看播放| 国产成人天天5g影院| 国产尤物一区二区三区| 亚洲综合在线免费| 国产成人综合亚洲欧美在| 国产天堂素人系列在线视频| av在线播放网| eeuss影院在线| 影音先锋中文字幕在线| 1区2区视频| 国产系列在线观看| 国产毛片在线看| 国产美女视频一区二区三区| 免费一区二区在线观看| 高潮白浆视频| 国产黄在线播放| 国产美女高潮一区二区三区| 尤物视频在线观看| 国产精品久久久久久精| 国产a级网站| 国产亚洲精品拍拍拍拍拍| 黄色片大全在线观看| 国产在线一二三| 最近中文字幕mv免费高清在线| 二人午夜免费观看在线视频| 国产又色又爽又黄刺激在线视频| 最近中文字幕mv免费高清视频8| 国产人成在线观看| 国内a∨免费播放| 在线观看中文字幕的网站| 国产日产一区二区三区| 亚洲欧美日韩一区成人| 69久久精品| 精品视频一二三| 在线观看wwww| 亚洲精品一区中文字幕电影| av文字幕在线观看| h网站久久久| 人人干人人插| 国产免费一级| 国产一卡2卡3卡4卡网站免费| 国产原创在线播放| 国产美女视频网站| 中文字幕在线观看日本| 国产精品第八页| 69免费视频| 精品国产一区二区三区久久久狼牙| 国产精品人人| 在线伊人免费视频| 青青草视频在线观看| 超碰国产在线观看| 国产秒拍福利视频露脸| 中文字幕有码在线视频| 伊人永久在线| 国产在线超碰| 精品国产福利一区二区在线| 免费久久网站| 国产特黄在线| 天堂在线国产| 国产美女福利在线观看| 精精国产xxxx视频在线动漫 | 五月综合网站| 136福利第一导航国产在线| 一本大道香蕉8中文在线视频| 欧美aaa一级片| 国产成人综合亚洲欧美在| 日本片在线看| 国产精品不卡一区二区三区在线观看| 国产大学生粉嫩无套流白浆| 在线观看的av| 国产深夜福利| 国产麻豆一区二区三区精品| 国产爆初菊在线观看免费视频网站| 四虎一区二区三区| 国产91在线视频蝌蚪| 午夜视频在线免费 | 亚洲男人的天堂成人| 午夜视频在线看| 日本在线天堂| 136福利第一导航国产在线| 日本中文字幕高清视频| 日本亚洲欧美| 亚洲最新永久观看在线| 国产精品久久精品牛牛影视| 国内自拍视频在线看免费观看| 国产无遮挡又黄又爽免费网站| 免费日本黄色| 四虎成人欧美精品在永久在线| 久久精品视频观看| 久热久精久品这里在线观看| 性网站在线播放| 97福利电影| 国产激情三区| 国产黄色小视频| 国产青青草在线| 国产精品久久久久久精| 五月综合网站| 国产高清在线观看| 伊人免费在线| 欧美性xxxx交| a中文在线播放| 另类综合图区| 国产女主播在线观看| 国产精品久久久久久久牛牛| 国产高清一级片| 亚洲精品自拍区在线观看| 日本电影在线观看| 日本视频二区| 丁香婷婷激情| 国产不卡精品一区二区三区| 在线三级中文| 国产男女av| 中文字幕av免费| 免费在线你懂的| 国产精品久久在线| 精品国产一区二区三区不卡在线| 日本福利在线| 国产精品爱久久久久久久小说| av在线free| 国产乱xxⅹxx国语对白| 精品视频一区二区观看| 激情综合丁香| 中文字幕4区| 国产免费福利| 在线视频三级| 国产无遮挡又黄又爽免费软件| 亚洲综合在线网| 国产剧情在线一区| av影视在线看| 国产激情视频一区二区三区| 色吊丝av中文字幕| 国产激情在线| 尤物视频在线观看| 青青青青在线| av片在线观看| 在线中文字幕视频| 国产精品你懂的在线观看| 国产在线中文字幕| 久久五月精品| 青草在线视频在线观看| 天天操中文字幕视频| 91麻豆免费在线视频| 国产视频一二三区| 国产视频三区| 国产午夜在线观看| 丁香花高清在线观看完整版 | 狠狠色综合久久婷婷| www.操.com| a视频在线观看免费| av中文天堂在线| 在线免费国产视频| 一级二级三级在线观看| 91视频黄色| 在线国产一区二区三区| 香蕉视频网站在线播放| 亚洲国产精品区| 中文岛国精品亚洲一区| 在线视频xx| 另类专区欧美| 中文字幕一区二区三区免费视频| 国产一区在线视频观看| 午夜视频免费在线观看| 国产区视频在线| 国产成在线观看免费视频| 999精品网| 亚洲精品白浆| 国产精选在线观看| 国产98在线| 大香伊人中文字幕精品| 国产精品入口麻豆高清| 影音先锋中文字幕在线| а√天堂8资源在线官网| 国产秒拍福利视频露脸| 国产精品久久麻豆| 日本黄在线观看| 国产日韩网站| jizz性欧美| 中文字幕av中文字幕| 91九色在线看| 国内外激情在线| 91在线最新| 五月天亚洲激情| 日本福利在线| 国产二区三区在线| 中文字幕一区免费|