真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

哈希表在php中如何使用

本篇內(nèi)容主要講解“哈希表在php中如何使用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“哈希表在php中如何使用”吧!

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供蟠龍網(wǎng)站建設(shè)、蟠龍做網(wǎng)站、蟠龍網(wǎng)站設(shè)計(jì)、蟠龍網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、蟠龍企業(yè)網(wǎng)站模板建站服務(wù),十載蟠龍做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

1.內(nèi)部組成

鍵(key):用于操作數(shù)據(jù)的標(biāo)示,例如PHP數(shù)組中的索引,或者字符串鍵等等。

槽(slot/bucket):哈希表中用于保存數(shù)據(jù)的一個(gè)單元,也就是數(shù)據(jù)真正存放的容器。

哈希函數(shù)(hash function):將key映射(map)到數(shù)據(jù)應(yīng)該存放的slot所在位置的函數(shù)。

2.優(yōu)勢(shì)

通過關(guān)鍵值計(jì)算直接獲取目標(biāo)位置,對(duì)于海量數(shù)據(jù)中的精確查找有非常驚人的速度提升,理論上即使有的數(shù)據(jù)量,一個(gè)實(shí)現(xiàn)良好的哈希表依舊可以保持O(1)的查找速度,而O(n)的普通列表此時(shí)已經(jīng)無法正常執(zhí)行查找操作(實(shí)際上不可能,受到JVM可用內(nèi)存限制,機(jī)器內(nèi)存限制等)。

3.應(yīng)用場(chǎng)景

在工程上,經(jīng)常用于通過名稱指定配置信息、通過關(guān)鍵字傳遞參數(shù)、建立對(duì)象與對(duì)象的映射關(guān)系等。目前最流行的NoSql數(shù)據(jù)庫之一redis,整體的使用了哈希表思想。

一言以蔽之,所有使用了鍵值對(duì)的地方,都運(yùn)用到了哈希表思想。

4.使用實(shí)例

size;
        $this->collection = new SplFixedArray($bucketsSize);
    }
 
    //生成散列值,作為存儲(chǔ)數(shù)據(jù)的位置
    private function _hashAlgorithm($key)
    {
        $length = strlen($key);
        $hashValue = 0;
        for($i=0; $i<$length; $i++) {
            $hashValue += ord($key[$i]);
        }
        return ($hashValue%($this->size));
    }
 
    //在相應(yīng)的位置存儲(chǔ)對(duì)應(yīng)的值
    public function set($key, $val)
    {
        $index = $this->_hashAlgorithm($key);
        $this->collection[$index] = $val;
    }
 
    //根據(jù)鍵生成散列值,進(jìn)而找到對(duì)應(yīng)的值
    public function get($key)
    {
        $index = $this->_hashAlgorithm($key);
        return $this->collection[$index];
    }
 
    //刪除某個(gè)值,成功返回1,失敗返回0
    public function del($key)
    {
        $index = $this->_hashAlgorithm($key);
        if(isset($this->collection[$index])) {
            unset($this->collection[$index]);
            return 1;
        } else {
            return 0;
        }
    }
 
    //判斷某個(gè)值是否存在,存在返回1, 不存在返回0
    public function exist($key)
    {
        $index = $this->_hashAlgorithm($key);
        if($this->collection[$index]){
            return 1;
        } else {
            return 0;
        }
    }
 
    //返回key的個(gè)數(shù)
    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]."";
            }
        }
    }
 
    //排序輸出
    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:
                //按照數(shù)字比較
                sort($temp, SORT_NUMERIC);
                break;
            //按照字符串進(jìn)行比較
            case 3:
                sort($temp, SORT_STRING);
                break;
            //根據(jù)本地字符編碼環(huán)境進(jìn)行比較
            case 4:
                sort($temp, SORT_LOCALE_STRING);
                break;
 
        }
        echo "
";
        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:
                //按照數(shù)字比較
                rsort($temp, SORT_NUMERIC);
                break;
            //按照字符串進(jìn)行比較
            case 3:
                rsort($temp, SORT_STRING);
                break;
            //根據(jù)本地字符編碼環(huán)境進(jìn)行比較
            case 4:
                rsort($temp, SORT_LOCALE_STRING);
                break;
 
        }
        echo "
";
        print_r($temp);
    }
 
 
}
 
//簡(jiǎn)單的測(cè)試
$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 : ";
$list->rev(3);

到此,相信大家對(duì)“哈希表在php中如何使用”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!


當(dāng)前題目:哈希表在php中如何使用
當(dāng)前地址:http://weahome.cn/article/pcijds.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部