亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

php數組的基礎結構介紹

2020-03-22 17:44:15
字體:
來源:轉載
供稿:網友
本篇文章給大家帶來的內容是關于組的基礎結構介紹,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

以下為 PHP 數組的基礎結構,插入,查找和 rehash 過程。

基礎結構:
struct _zend_array { zend_refcounted_h gc; union { struct { ZEND_ENDIAN_LOHI_4( zend_uchar flags, zend_uchar nApplyCount, zend_uchar nIteratorsCount, zend_uchar consistency) } v; uint32_t flags; } u; uint32_t nTableMask; // 哈希值計算掩碼,等于nTableSize的負值(nTableMask = -nTableSize) Bucket *arData; // 存儲元素數組,指向第一個Bucket uint32_t nNumUsed; // 已用Bucket數 uint32_t nNumOfElements; // 哈希表有效元素數 = nNumUsed - num(is_undef) uint32_t nTableSize; // 哈希表總大小,為2的n次方, 最小為8 uint32_t nInternalPointer; // 懷疑是內部指針 zend_long nNextFreeElement; // 下一個可用的數值索引 arr[] = 1;arr[ a ] = 2;arr[] = 3; 則nNextFreeElement = 2; dtor_func_t pDestructor;typedef struct _Bucket { zval val; // 存儲的具體html' target='_blank'>value zend_ulong h; // hash value (or numeric index)  zend_string *key; // string key or NULL for numerics} Bucket;

說明:

數組存放的時候先按照順序保存 value,再保存 value 的位置。

存放記錄的數組稱做散列表,這個數組用來存儲 value,而 value 按順序保存,其存儲位置會保存在由 key 計算 hash 取模 nTableMask 得到的 idx 中。

數組初始化的時候最小大小為 8,以此為16,32,64。。。

數組初始化的時候邊做的 idx 區會全部初始化為 -1,rehash 的時候也會初始化為 -1。

數組中刪除一個元素的時候,是把該刪除的元素的 type 標記為 is_undef, 并且 nNumOfEmelment - 1,如果該元素為最后一個元素,那么 nNumUsed - 1。

插入:

以 $arr = [ a = 1, b = 2] 為例:

首先把 1 放到數組中,其 val.u2.next = -1, 根據其下標 a 計算 hash, 然后 hash 取模 nTableMask 得到一個 idx, 在該 idx 的位置保存前邊保存 1 的索引 nindex。

再存放 2, 其 val.u2.next = -1, 如果根據其下標 b 計算hash 取模 nTableMask 得到的 idx 中已經有值,那么說明出現了哈希碰撞,這個時候把當前 idx 中的值取出來保存到當前 val.u2.next,把保存 2 的索引 nindex 保存在當前 idx,以此類推。

查找:

根據下標 a 計算 hash 取模 nTableMask 得到一個 idx ,拿到該 idx 中的值 nindex 去 arData 中查找,如果找到的位置中的 key != a, 那么找不到;如果找到的位置中的 key == a,那么檢查其 u2.next, 如果為 -1, 那么找到了;如果不為-1,說明插入的過程中出現了哈希沖突,那么根據 u2.next 繼續在 arData 中查找,直到找到為止。

rehash:

rehash 的時候,首先把 nindex 區的所有記錄全部重置為 -1,然后從第一個元素開始挪動指針 *p,如果元素沒有被標記為 is_undef,那么重新計算該元素的 key hash 并放到 nindex,然后循環, p++。如果元素被標記為 is_undef, 那么繼續挪動指針 p++,并設置一個新的指針 j 指向該位置,繼續循環,把后邊不為 is_undef 的元素一個一個挪到前邊來,p 每次移動,j 遇到 is_undef 就不移動,直到被賦值。一直挪動到最后的 nNunUsed ,那么把 j 賦值給 nNunUsed,之后再插入元素的時候就從這個位置開始插入,以前的元素直接被覆蓋就是了。

以上就是php數組的基礎結構介紹的詳細內容,PHP教程

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品久久久久久久电影| 蜜臀久久99精品久久久无需会员| 亚洲国产精品va在线看黑人动漫| 国产亚洲视频中文字幕视频| 国产亚洲aⅴaaaaaa毛片| 中文字幕一区电影| 欧美日韩国产一区二区三区| 亚洲视频专区在线| 久久视频中文字幕| 亚洲日本中文字幕| 亚洲精品美女免费| 国产亚洲综合久久| 中文字幕综合在线| 欧美精品激情在线| 色噜噜亚洲精品中文字幕| 一区二区亚洲精品国产| 国产精品日韩欧美综合| 欧美国产欧美亚洲国产日韩mv天天看完整| 国产日韩欧美自拍| 国产精品91免费在线| 亚洲精品乱码久久久久久金桔影视| 成人国产精品久久久| 亚洲男子天堂网| 久久久国产一区二区三区| 欧美日韩福利视频| 欧美电影第一页| 亚洲精品一区在线观看香蕉| 国模吧一区二区三区| 亚洲国产高清高潮精品美女| 在线视频一区二区| 国产精品高精视频免费| 精品久久香蕉国产线看观看gif| 精品国产成人av| 久久久久久午夜| 美女av一区二区三区| 亚洲天堂视频在线观看| 日韩精品福利网站| 一本色道久久88亚洲综合88| 久久精品视频中文字幕| 国产精品久久久久久影视| 亚洲女人天堂成人av在线| 欧美特级www| 岛国av一区二区| 欧美成人午夜剧场免费观看| 国产精品av在线播放| 久久久精品在线观看| 国产脚交av在线一区二区| 久久久久久久影视| 日韩欧美黄色动漫| 国产精品日韩专区| 欧美日韩国产二区| 日韩视频精品在线| 久久韩国免费视频| 亚洲第一精品福利| 成人免费大片黄在线播放| 91免费综合在线| 色悠久久久久综合先锋影音下载| 欧美专区在线播放| 久久久久久久久久国产精品| 日本亚洲欧洲色α| 欧美精品少妇videofree| 97在线看免费观看视频在线观看| 亚洲字幕在线观看| 亚洲欧美激情视频| 久久免费视频网站| 国产免费亚洲高清| 性欧美xxxx视频在线观看| 欧美孕妇毛茸茸xxxx| 在线观看日韩视频| 成人淫片在线看| 欧美午夜视频在线观看| 日韩成人中文字幕| 国产一区二区三区在线播放免费观看| 日日骚久久av| 伊人久久久久久久久久久久久| 欧美精品亚州精品| 国产视频久久久久久久| 国产亚洲一区精品| 久久久亚洲精品视频| 亚洲国产97在线精品一区| 亚洲欧美国产日韩天堂区| 久久亚洲精品成人| 最新69国产成人精品视频免费| 日本亚洲精品在线观看| 国产精品成熟老女人| 国产欧美精品xxxx另类| 欧美精品久久久久久久免费观看| 欧美肥老妇视频| 亚洲精品国精品久久99热一| xxav国产精品美女主播| 日本不卡免费高清视频| 亚洲伊人第一页| 亚洲精品视频播放| 亚洲日本中文字幕| 少妇av一区二区三区| 久久久久久有精品国产| 成人av资源在线播放| 欧洲成人在线视频| 欧美黑人极品猛少妇色xxxxx| 国产精品久久久久久久午夜| 成人黄色免费片| 国产日韩在线看片| 国产欧美日韩专区发布| 亚洲欧美国内爽妇网| 亚洲性日韩精品一区二区| 国产精品一区二区三区成人| 色老头一区二区三区在线观看| 夜夜嗨av一区二区三区免费区| 美女视频久久黄| 97久久久久久| 欧美激情亚洲自拍| 欧美日韩在线视频观看| 国产成一区二区| www.xxxx欧美| 91产国在线观看动作片喷水| 国内精品400部情侣激情| www.久久草.com| 国产主播在线一区| 国产精品嫩草影院久久久| 中文字幕在线看视频国产欧美在线看完整| 亚洲国产精品字幕| 亚洲成人精品视频| 亚洲精品99999| 欧美在线性爱视频| 欧美激情伊人电影| 国产一区二区三区18| 亚洲最大的网站| 91精品久久久久久久久中文字幕| 日韩精品免费在线视频观看| 亚洲人成电影网站色| 亚洲色图国产精品| 国产精品入口尤物| 91精品视频播放| 久久999免费视频| 日本电影亚洲天堂| 黑人巨大精品欧美一区免费视频| 欧美疯狂xxxx大交乱88av| 亚洲视频在线播放| 日本精品久久中文字幕佐佐木| 秋霞成人午夜鲁丝一区二区三区| 国产精品人人做人人爽| 国内精品久久久久久久| 91免费欧美精品| 米奇精品一区二区三区在线观看| 日韩成人久久久| 91av国产在线| 在线日韩中文字幕| 亚洲电影免费观看高清完整版在线| 日韩美女毛茸茸| 欧美老少做受xxxx高潮| 不卡av在线播放| 91日本在线观看| 91精品国产91久久久久久| 国产玖玖精品视频| 成人妇女淫片aaaa视频| 中文字幕国内精品| 欧美激情精品久久久久| 中日韩午夜理伦电影免费| 亚洲精品国产品国语在线| 国产精品久久久久av免费| 中文字幕v亚洲ⅴv天堂| 国内免费精品永久在线视频| 亚洲精品理论电影| 亚洲人成电影在线|