目錄
PHP实现哈希表
首頁 後端開發 php教程 PHP实现哈希表_PHP教程

PHP实现哈希表_PHP教程

Jul 13, 2016 am 09:51 AM
哈希

PHP实现哈希表

//一个简单的哈希表实现。。。。


<?php

class hashTable
{
    private $collection;
    private $size = 100;

    //初始化哈希表的大小
    public function __construct($size=&#39;&#39;)
    {
        $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 class="code">";
        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 class="code">";
        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);
登入後複製


www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1011356.htmlTechArticlePHP实现哈希表 //一个简单的哈希表实现。。。。 size; $this->collection = new SplFixedArray($bucketsSize); } //生成散列值,作为存储数据的位置 private...
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1659
14
CakePHP 教程
1416
52
Laravel 教程
1310
25
PHP教程
1258
29
C# 教程
1232
24
如何使用C++中的雜湊搜尋演算法 如何使用C++中的雜湊搜尋演算法 Sep 19, 2023 pm 02:49 PM

如何使用C++中的雜湊搜尋演算法雜湊(Hash)搜尋演算法是一種高效的查找和儲存技術,它將關鍵字透過雜湊函數轉換為固定長度的索引,然後利用這個索引在資料結構中進行搜尋。在C++中,我們可以透過使用標準函式庫中的雜湊容器和雜湊函數來實作哈希搜尋演算法。本文將介紹如何使用C++中的雜湊搜尋演算法,並提供具體的程式碼範例。引入頭檔和命名空間首先,在使用C++中的雜湊搜尋算

如何用Python寫哈希查找演算法? 如何用Python寫哈希查找演算法? Sep 21, 2023 pm 02:37 PM

如何用Python寫哈希查找演算法?哈希查找演算法,又稱為雜湊查找演算法,是一種基於哈希表的資料查找方法。相較於線性查找和二分查找等傳統查找演算法,哈希查找演算法具有更高的查找效率。在Python中,我們可以使用字典(dictionary)來實作雜湊表,進而實作雜湊查找。哈希查找演算法的基本想法是將待查找的關鍵字透過雜湊函數轉換成索引值,然後根據索引值在雜湊表中查

Python底層技術揭秘:如何實作哈希演算法 Python底層技術揭秘:如何實作哈希演算法 Nov 08, 2023 pm 06:40 PM

Python底層技術揭秘:如何實作雜湊演算法,需要具體程式碼範例摘要:雜湊演算法是電腦領域中常用的技術之一,用於快速確定資料的唯一識別。 Python作為一門高階語言,提供了許多內建的雜湊函數,如hash()函數以及各種雜湊演算法的實作。本文將揭示哈希演算法的原理和Python底層實現的細節,並提供具體的程式碼範例。哈希演算法簡介哈希演算法,又稱雜湊演算法,是一種將任意長度的

一文通俗解釋什麼是哈希演算法!什麼是哈希演算法? 一文通俗解釋什麼是哈希演算法!什麼是哈希演算法? Mar 14, 2024 am 11:46 AM

在了解比特幣投資和區塊鏈技術中,哈希演算法可以說經常出現,幣圈戲言饒舌有嘻哈,演算法有哈希。關於「演算法」一詞,目前國內用戶使用的比較模糊,有時指共識機制,有時指具體的Hash演算法,作為區塊鏈演算法,哈希演算法一直讓一般大眾感到晦澀難懂,那麼,什麼是哈希算法?接下來幣圈子小編就來跟大家通俗的講解一下哈希演算法是什麼?希望能夠讓投資人看完這篇文章就能讀懂哈希演算法。什麼是哈希演算法?哈希音譯自“Hash”,又稱為“雜湊”。本質上是一種電腦程序,可接收任意

PHP開發中的最佳加密和哈希技術 PHP開發中的最佳加密和哈希技術 May 27, 2023 am 08:21 AM

在今天的數位時代中,隨著網路的發展和資訊的日益重要,資料的保密性和安全性變得越來越重要。為了確保資料在傳輸過程中不會被竊取或篡改,PHP開發人員通常使用加密和雜湊技術來保護敏感資料。本文將介紹PHP開發中最常用的加密和雜湊技術,以及它們的優缺點。一、加密技術加密是一種保護資料安全性的技術,它使用演算法將資料轉換為無意義的形式。只有持有密鑰的人才能將其還原為可讀

在PHP中,雜湊函數是什麼意思? 在PHP中,雜湊函數是什麼意思? Sep 03, 2023 am 08:49 AM

哈希函數是可用於將任意大小的資料映射到固定大小的資料的任何函數。哈希函數傳回的值稱為哈希值、哈希代碼、摘要或簡稱為哈希。語法stringhash(string$algo,string$data[,bool$raw_output=FALSE])參數algo所選雜湊演算法的名稱(如「md5」、「sha256」、「haval160,4」等)data要散列的消息。 raw_output設定為TRUE時,輸出原始二進位資料。 FALSE輸出小寫十六進位。範例<?php &nbsp

如何處理記帳系統中的雜湊和加密功能 - 使用PHP實作雜湊和加密的開發方法 如何處理記帳系統中的雜湊和加密功能 - 使用PHP實作雜湊和加密的開發方法 Sep 26, 2023 pm 01:15 PM

如何處理記帳系統中的雜湊和加密功能-使用PHP實現哈希和加密的開發方法引言:隨著數位化時代的到來,各種資訊系統的安全性變得越發重要。在設計和開發記帳系統時,保護用戶隱私資料是至關重要的。其中,使用哈希和加密功能可以有效地保護用戶的敏感資訊。本文將介紹如何使用PHP實作記帳系統中的雜湊和加密功能,並提供具體的程式碼範例。一、哈希功能的實作哈希是一種單向加密算

PHP 負載平衡的多樣性:了解不同技術的優缺點 PHP 負載平衡的多樣性:了解不同技術的優缺點 Mar 02, 2024 pm 02:50 PM

介紹在當今快節奏且互聯的數位化世界中,確保應用程式的高可用性至關重要。負載平衡技術使應用程式能夠在多個伺服器上分發傳入流量,從而提高效能和可靠性。 PHP提供了一系列負載平衡技術的支持,每種技術都具有其獨特的優勢和限制。輪詢(RoundRobin)輪詢是一種簡單而有效的負載平衡技術,它將請求按順序分發到伺服器池。這種方法易於實現,並且可以保證請求在伺服器之間均勻分佈。 $servers=array("server1","server2","server3");$index=0;while(true)

See all articles