本篇內容介紹了“PHP底層數組怎么實現元素的有序性”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
成都創新互聯公司服務項目包括城陽網站建設、城陽網站制作、城陽網頁制作以及城陽網絡營銷策劃等。多年來,我們專注于互聯網行業,利用自身積累的技術優勢、行業經驗、深度合作伙伴關系等,向廣大中小型企業、政府機構等提供互聯網行業的解決方案,城陽網站推廣取得了明顯的社會效益與經濟效益。目前,我們服務的客戶以成都為中心已經輻射到城陽省份的部分城市,未來相信會繼續擴大服務區域并繼續獲得客戶的支持與信任!
散列表主要由兩部分組成:存儲元素數組、散列函數。散列表的基本實現前面已經探討過,PHP 中的數組除了具備散列表的基本特點之外,還有一個特別的地方,那就是它是有序的(與Java中的HashMap的無序有所不同):數組中各元素的順序和插入順序一致。這個是怎么實現的呢?
為了實現 PHP 數組的有序性,PHP 底層的散列表在散列函數與元素數組之間加了一層映射表,這個映射表也是一個數組,大小和存儲元素的數組相同,存儲元素的類型為整型,用于保存元素在實際存儲的有序數組中的下標 —— 元素按照先后順序依次插入實際存儲數組,然后將其數組下標按照散列函數散列出來的位置存儲在新加的映射表中:
這樣,就可以完成最終存儲數據的有序性了。
PHP 數組底層結構中并沒有顯式標識這個中間映射表,而是與 arData 放到了一起,在數組初始化的時候并不僅僅分配用于存儲 Bucket 的內存,還會分配相同數量的 uint32_t 大小的空間,這兩塊空間是一起分配的,然后將 arData 偏移到存儲元素數組的位置,而這個中間映射表就可以通過 arData 向前訪問到。
“PHP底層數組怎么實現元素的有序性”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注創新互聯網站,小編將為大家輸出更多高質量的實用文章!
文章標題:PHP底層數組怎么實現元素的有序性
文章轉載:http://m.kartarina.com/article34/jedise.html
成都網站建設公司_創新互聯,為您提供網站策劃、網站導航、全網營銷推廣、品牌網站建設、手機網站建設、外貿網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯