目录
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脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何使用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底层实现的细节,并提供具体的代码示例。哈希算法简介哈希算法,又称散列算法,是一种将任意长度的

PHP开发中的最佳加密和哈希技术 PHP开发中的最佳加密和哈希技术 May 27, 2023 am 08:21 AM

在今天的数字时代中,随着互联网的发展和信息的日益重要,数据的保密性和安全性变得越来越重要。为了确保数据在传输过程中不被窃取或篡改,PHP开发人员通常使用加密和哈希技术来保护敏感数据。本文将介绍PHP开发中最常用的加密和哈希技术,以及它们的优缺点。一、加密技术加密是一种保护数据安全性的技术,它使用算法将数据转换为无意义的形式。只有持有密钥的人才能将其还原为可读

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

在了解比特币投资和区块链技术中,哈希算法可以说经常出现,币圈戏言说唱有嘻哈,算法有哈希。关于“算法”一词,目前国内用户使用的比较模糊,有时指共识机制,有时指具体的Hash算法,作为区块链算法,哈希算法一直让普通大众感到晦涩难懂,那么,什么是哈希算法?接下来币圈子小编就来给大家通俗的讲解一下哈希算法是什么?希望能够让投资者看完本文就能读懂哈希算法。什么是哈希算法?哈希音译自“Hash”,又名为“散列”。本质上是一种计算机程序,可接收任意

在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