您好,登錄后才能下訂單哦!
本篇內容主要講解“哈希表在php中如何使用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“哈希表在php中如何使用”吧!
1.內部組成
鍵(key):用于操作數據的標示,例如PHP數組中的索引,或者字符串鍵等等。
槽(slot/bucket):哈希表中用于保存數據的一個單元,也就是數據真正存放的容器。
哈希函數(hash function):將key映射(map)到數據應該存放的slot所在位置的函數。
2.優勢
通過關鍵值計算直接獲取目標位置,對于海量數據中的精確查找有非常驚人的速度提升,理論上即使有的數據量,一個實現良好的哈希表依舊可以保持O(1)的查找速度,而O(n)的普通列表此時已經無法正常執行查找操作(實際上不可能,受到JVM可用內存限制,機器內存限制等)。
3.應用場景
在工程上,經常用于通過名稱指定配置信息、通過關鍵字傳遞參數、建立對象與對象的映射關系等。目前最流行的NoSql數據庫之一Redis,整體的使用了哈希表思想。
一言以蔽之,所有使用了鍵值對的地方,都運用到了哈希表思想。
4.使用實例
<?php class hashTable { private $collection; private $size = 100; //初始化哈希表的大小 public function __construct($size='') { $bucketsSize = is_int($size)?$size:$this->size; $this->collection = new SplFixedArray($bucketsSize); } //生成散列值,作為存儲數據的位置 private function _hashAlgorithm($key) { $length = strlen($key); $hashValue = 0; for($i=0; $i<$length; $i++) { $hashValue += ord($key[$i]); } return ($hashValue%($this->size)); } //在相應的位置存儲對應的值 public function set($key, $val) { $index = $this->_hashAlgorithm($key); $this->collection[$index] = $val; } //根據鍵生成散列值,進而找到對應的值 public function get($key) { $index = $this->_hashAlgorithm($key); return $this->collection[$index]; } //刪除某個值,成功返回1,失敗返回0 public function del($key) { $index = $this->_hashAlgorithm($key); if(isset($this->collection[$index])) { unset($this->collection[$index]); return 1; } else { return 0; } } //判斷某個值是否存在,存在返回1, 不存在返回0 public function exist($key) { $index = $this->_hashAlgorithm($key); if($this->collection[$index]){ return 1; } else { return 0; } } //返回key的個數 public function size() { $size = 0; $length = count($this->collection); for($i=0; $i<$length; $i++) { if($this->collection[$i]) { $size++; } } return $size; } //返回value的序列 public function val() { $size = 0; $length = count($this->collection); for($i=0; $i<$length; $i++) { if($this->collection[$i]) { echo $this->collection[$i]."<br />"; } } } //排序輸出 public function sort($type=1) { $length = count($this->collection); $temp = array(); for($i=0; $i<$length; $i++) { if($this->collection[$i]) { $temp[] = $this->collection[$i]; } } switch ($type) { case 1: //正常比較 sort($temp, SORT_REGULAR); break; case 2: //按照數字比較 sort($temp, SORT_NUMERIC); break; //按照字符串進行比較 case 3: sort($temp, SORT_STRING); break; //根據本地字符編碼環境進行比較 case 4: sort($temp, SORT_LOCALE_STRING); break; } echo "<pre>"; print_r($temp); } //逆序輸出 public function rev($type=1) { $length = count($this->collection); $temp = array(); for($i=0; $i<$length; $i++) { if($this->collection[$i]) { $temp[] = $this->collection[$i]; } } switch ($type) { case 1: //正常比較 rsort($temp, SORT_REGULAR); break; case 2: //按照數字比較 rsort($temp, SORT_NUMERIC); break; //按照字符串進行比較 case 3: rsort($temp, SORT_STRING); break; //根據本地字符編碼環境進行比較 case 4: rsort($temp, SORT_LOCALE_STRING); break; } echo "<pre>"; print_r($temp); } } //簡單的測試 $list = new hashTable(200); $list->set("zero", "zero compare"); $list->set("one", "first test"); $list->set("two", "second test"); $list->set("three", "three test"); $list->set("four", "fouth test"); echo $list->val(); echo "after sorted : <br />"; $list->rev(3);
到此,相信大家對“哈希表在php中如何使用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。