天天看點

php 全局哈希表,[PHP] PHP數組的哈希表實作

1.HashTable中的有個字段記錄元素個數,每插入一個元素或者unset删掉元素時會更新這個字段。這樣在進行count()函數統計數組元素個數時就能快速的傳回。

2.在PHP中可以使用字元串或者數字作為數組的索引 , 數字索引直接就可以作為哈希表的索引,數字也無需進行哈希處理 , 在PHP數組中如果索引字元串可以被轉換成數字也會被轉換成數字索引。是以在PHP中例如'10','11'這類的字元索引和數字索引10, 11沒有差別。

3.數組在插入元素的時候 , 會把字元串key計算出一個索引值 , 如果索引值中有資料 , 就在該索引位置存放一個連結清單 ,  把新元素插到連結清單頭上

但是, 元素bucket中存放着整個哈希表的連結清單指針 , 整個哈希表的連結清單順序是按照插入的順序進行連結的, 注意下圖的紅線 , 是以在foreach周遊時 , 會按照插入順序進行輸出

4.當哈希表設定的數組個數滿了時 , 再插入元素會進行數組擴容 , 有個二倍擴容的機制 , 并且需要把原先裡面的元素從新哈希到新的數組裡 .

php 全局哈希表,[PHP] PHP數組的哈希表實作