91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

哈希表在php中如何使用

發布時間:2022-05-25 15:43:25 來源:億速云 閱讀:126 作者:iii 欄目:大數據

本篇內容主要講解“哈希表在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中如何使用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

东城区| 高唐县| 夏津县| 贵定县| 兴仁县| 于田县| 永平县| 永新县| 怀柔区| 常德市| 婺源县| 旬阳县| 清徐县| 莲花县| 弥渡县| 耿马| 天长市| 柳江县| 清原| 木里| 丽江市| 开鲁县| 灯塔市| 湖口县| 象山县| 东山县| 绥滨县| 淅川县| 武义县| 高清| 琼海市| 鸡西市| 淳化县| 沂水县| 公主岭市| 昔阳县| 晋江市| 宁强县| 锡林浩特市| 广昌县| 黄平县|