如何在php中使用哈希表

本篇文章為大家展示了如何在php中使用哈希表,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

超過十多年行業(yè)經(jīng)驗,技術領先,服務至上的經(jīng)營模式,全靠網(wǎng)絡和口碑獲得客戶,為自己降低成本,也就是為客戶降低成本。到目前業(yè)務范圍包括了:網(wǎng)站設計制作、成都網(wǎng)站設計,成都網(wǎng)站推廣,成都網(wǎng)站優(yōu)化,整體網(wǎng)絡托管,小程序定制開發(fā),微信開發(fā),app軟件開發(fā)公司,同時也可以讓客戶的網(wǎng)站和網(wǎng)絡營銷和我們一樣獲得訂單和生意!

php的框架有哪些

php的框架:1、Laravel,Laravel是一款免費并且開源的PHP應用框架。2、Phalcon,Phalcon是運行速度最快的一個PHP框架。3、Symfony,Symfony是一款為Web項目準備的PHP框架。4、Yii,Yii是一款快速、安全和專業(yè)的PHP框架。5、CodeIgniter,CodeIgniter是一款非常敏捷的開源PHP框架。6、CakePHP,CakePHP是一款老牌的PHP框架。7.Kohana,Kohana是一款敏捷但是功能強大的PHP框架。

1.內部組成

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

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

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

2.優(yōu)勢

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

3.應用場景

在工程上,經(jīng)常用于通過名稱指定配置信息、通過關鍵字傳遞參數(shù)、建立對象與對象的映射關系等。目前最流行的NoSql數(shù)據(jù)庫之一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);
    }
 
    //生成散列值,作為存儲數(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));
    }
 
    //在相應的位置存儲對應的值
    public function set($key, $val)
    {
        $index = $this->_hashAlgorithm($key);
        $this->collection[$index] = $val;
    }
 
    //根據(jù)鍵生成散列值,進而找到對應的值
    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的個數(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]."<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:
                //按照數(shù)字比較
                sort($temp, SORT_NUMERIC);
                break;
            //按照字符串進行比較
            case 3:
                sort($temp, SORT_STRING);
                break;
            //根據(jù)本地字符編碼環(huán)境進行比較
            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:
                //按照數(shù)字比較
                rsort($temp, SORT_NUMERIC);
                break;
            //按照字符串進行比較
            case 3:
                rsort($temp, SORT_STRING);
                break;
            //根據(jù)本地字符編碼環(huán)境進行比較
            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中使用哈希表,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)頁名稱:如何在php中使用哈希表
URL鏈接:http://bm7419.com/article24/jdgece.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供虛擬主機、網(wǎng)站排名、網(wǎng)站維護、網(wǎng)站設計公司、網(wǎng)站制作、品牌網(wǎng)站建設

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設