목차
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 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

C++에서 해시 검색 알고리즘을 사용하는 방법 C++에서 해시 검색 알고리즘을 사용하는 방법 Sep 19, 2023 pm 02:49 PM

C++에서 해시 검색 알고리즘을 사용하는 방법 해시 검색 알고리즘은 해시 함수를 통해 키워드를 고정 길이 인덱스로 변환한 후 이 인덱스를 데이터 구조 검색에 사용하는 효율적인 검색 및 저장 기술입니다. C++에서는 표준 라이브러리의 해시 컨테이너와 해시 함수를 사용하여 해시 검색 알고리즘을 구현할 수 있습니다. 이 기사에서는 C++에서 해시 검색 알고리즘을 사용하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 헤더 파일과 네임스페이스 소개 먼저 C++에서 해시 검색 알고리즘을 사용하기 전에

Python에서 해시 조회 알고리즘을 작성하는 방법은 무엇입니까? Python에서 해시 조회 알고리즘을 작성하는 방법은 무엇입니까? Sep 21, 2023 pm 02:37 PM

Python에서 해시 조회 알고리즘을 작성하는 방법은 무엇입니까? 해시 검색 알고리즘이라고도 알려진 해시 검색 알고리즘은 해시 테이블을 기반으로 한 데이터 검색 방법입니다. 선형 검색 및 이진 검색과 같은 기존 검색 알고리즘과 비교하여 해시 검색 알고리즘은 검색 효율성이 더 높습니다. Python에서는 사전을 사용하여 해시 테이블을 구현한 다음 해시 조회를 구현할 수 있습니다. 해시 검색 알고리즘의 기본 개념은 검색하려는 키워드를 해시 함수를 통해 인덱스 값으로 변환한 후, 인덱스 값을 기준으로 해시 테이블에서 검색하는 것이다.

Python 기반 기술 공개: 해시 알고리즘 구현 방법 Python 기반 기술 공개: 해시 알고리즘 구현 방법 Nov 08, 2023 pm 06:40 PM

Python의 기반 기술 공개: 해시 알고리즘을 구현하는 방법, 구체적인 코드 예제가 필요합니다. 요약: 해시 알고리즘은 컴퓨터 분야에서 일반적으로 사용되는 기술 중 하나이며 데이터의 고유 식별을 빠르게 판별하는 데 사용됩니다. 고급 언어인 Python은 hash() 함수 및 다양한 해시 알고리즘 구현과 같은 많은 내장 해시 함수를 제공합니다. 이 기사에서는 해싱 알고리즘의 원리와 Python의 기본 구현 세부 사항을 공개하고 구체적인 코드 예제를 제공합니다. 해시 알고리즘 소개 해시 알고리즘이라고도 알려진 해시 알고리즘은 임의 길이의 데이터를 임의의 길이의 데이터로 변환하는 방법입니다.

PHP 개발에서 최고의 암호화 및 해싱 기술 PHP 개발에서 최고의 암호화 및 해싱 기술 May 27, 2023 am 08:21 AM

오늘날 디지털 시대에는 인터넷의 발달과 정보의 중요성이 높아지면서 데이터의 기밀성과 보안이 더욱 중요해지고 있습니다. 전송 중에 데이터가 도난당하거나 변조되지 않도록 하기 위해 PHP 개발자는 암호화 및 해싱 기술을 사용하여 민감한 데이터를 보호하는 경우가 많습니다. 이 기사에서는 PHP 개발에서 가장 일반적으로 사용되는 암호화 및 해싱 기술과 그 장점과 단점을 소개합니다. 1. 암호화 기술 암호화란 데이터를 의미 없는 형태로 변환하기 위해 알고리즘을 사용하여 데이터 보안을 보호하는 기술입니다. 열쇠를 갖고 있는 사람만이 읽을 수 있는 상태로 복원할 수 있습니다.

해시 알고리즘이 무엇인지 설명하는 간단한 기사입니다! 해시 알고리즘이란 무엇입니까? 해시 알고리즘이 무엇인지 설명하는 간단한 기사입니다! 해시 알고리즘이란 무엇입니까? Mar 14, 2024 am 11:46 AM

비트코인 투자와 블록체인 기술을 이해하면 해시 알고리즘이 자주 등장한다고 할 수 있습니다. 화폐계에서는 힙합에 힙합이 있고 알고리즘에 해시가 있다고 합니다. '알고리즘'이라는 단어는 현재 국내 사용자들이 막연하게 사용하고 있는 용어로 때로는 합의 메커니즘을 지칭하기도 하고, 때로는 특정 해시 알고리즘을 지칭하기도 하는 만큼, 해시 알고리즘은 언제나 일반 대중에게 느껴져 왔습니다. 그렇다면 해시 알고리즘이란 무엇입니까? 다음으로, 화폐계 편집자가 해시 알고리즘이 무엇인지 간단하게 설명해줄 까요? 이 글을 읽고 투자자들이 해시 알고리즘을 이해할 수 있기를 바랍니다. 해시 알고리즘이란 무엇입니까? 해시는 "해시"라고도 알려진 "해시"를 음역한 것입니다. 본질적으로 모든 것을 받아들이는 컴퓨터 프로그램

PHP에서 해시 함수는 무엇을 의미하나요? PHP에서 해시 함수는 무엇을 의미하나요? Sep 03, 2023 am 08:49 AM

해시 함수는 모든 크기의 데이터를 고정된 크기의 데이터에 매핑하는 데 사용할 수 있는 함수입니다. 해시 함수에서 반환된 값을 해시 값, 해시 코드, 다이제스트 또는 간단히 해시라고 합니다. 구문 stringhash(string$algo,string$data[,bool$raw_output=FALSE]) 매개변수 algo 선택한 해시 알고리즘의 이름(예: "md5", "sha256", "haval160,4" 등) 데이터 해시된 정보여야 합니다. raw_output을 TRUE로 설정하면 원시 바이너리 데이터가 출력됩니다. FALSE는 소문자 16진수를 출력합니다. 예<?php &nbsp

회계 시스템에서 해싱 및 암호화 기능을 처리하는 방법 - PHP를 사용한 해싱 및 암호화 개발 방법 회계 시스템에서 해싱 및 암호화 기능을 처리하는 방법 - PHP를 사용한 해싱 및 암호화 개발 방법 Sep 26, 2023 pm 01:15 PM

회계 시스템에서 해싱 및 암호화 기능을 처리하는 방법 - PHP를 이용한 해싱 및 암호화 개발 방법 소개: 디지털 시대의 도래와 함께 다양한 정보 시스템의 보안이 더욱 중요해지고 있습니다. 회계 시스템을 설계하고 개발할 때 사용자 개인 정보 데이터를 보호하는 것이 중요합니다. 그 중 해싱 및 암호화 기능을 사용하면 사용자의 민감한 정보를 효과적으로 보호할 수 있습니다. 이 기사에서는 PHP를 사용하여 회계 시스템에서 해싱 및 암호화 기능을 구현하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1. 해시 함수 구현 해시는 단방향 암호화 알고리즘입니다.

PHP 로드 밸런싱 다양성: 다양한 기술의 장단점 이해 PHP 로드 밸런싱 다양성: 다양한 기술의 장단점 이해 Mar 02, 2024 pm 02:50 PM

소개 오늘날 빠르게 변화하고 연결된 디지털 세계에서는 애플리케이션의 고가용성을 보장하는 것이 중요합니다. 로드 밸런싱 기술을 사용하면 애플리케이션이 들어오는 트래픽을 여러 서버에 분산하여 성능과 안정성을 향상시킬 수 있습니다. PHP는 다양한 로드 밸런싱 기술을 지원하며 각 기술에는 고유한 장점과 한계가 있습니다. 라운드 로빈(Round Robin) 라운드 로빈은 요청을 서버 풀에 순서대로 분배하는 간단하고 효과적인 로드 밸런싱 기술입니다. 이 접근 방식은 구현하기 쉽고 요청이 서버 간에 고르게 분산되도록 보장합니다. $servers=array("서버1","서버2","서버3");$index=0;while(true)

See all articles