>백엔드 개발 >PHP 튜토리얼 >PHP 데이터 구조: 빠른 쿼리 마이닝을 위한 강력한 도구인 해시 테이블의 비밀

PHP 데이터 구조: 빠른 쿼리 마이닝을 위한 강력한 도구인 해시 테이블의 비밀

WBOY
WBOY원래의
2024-06-02 14:56:57518검색

해시 테이블은 해시 함수를 통해 키를 배열의 인덱스에 매핑하는 효율적인 데이터 구조로, 빠른 데이터 저장 및 검색이 가능합니다. 실제 전투에서는 단어의 발생 횟수를 효율적으로 계산하는 데 사용할 수 있습니다. ① 해시 테이블을 사용하여 각 단어를 카운터에 매핑합니다. ② 단어가 나타나면 해시 테이블에 키가 있는지 확인합니다. 없으면 추가하고 개수를 1로 설정합니다. ④ 있으면 개수에 1을 추가합니다.

PHP 데이터 구조: 빠른 쿼리 마이닝을 위한 강력한 도구인 해시 테이블의 비밀

PHP 데이터 구조: 해시 테이블의 비밀

해시 테이블 소개

해시 테이블은 데이터를 저장하고 빠르게 검색하는 데 사용되는 효율적인 데이터 구조입니다. 키를 값에 매핑하고 해시 함수를 사용하여 키를 배열에서 사용할 수 있는 인덱스로 변환합니다.

해시 함수

해시 함수는 키를 인덱스로 변환하는 마법의 공식입니다. 이상적인 해시 함수는 다음과 같습니다.

  • Uniform: 서로 다른 키에 대해 서로 다른 인덱스 생성
  • 빠름: 일정한 시간에 계산
  • Collision-free: 여러 키에 대해 동일한 인덱스 생성 방지

실용 예: 단어 카운터

텍스트 파일이 있고 각 단어가 나타나는 횟수를 계산해야 한다고 가정해 보겠습니다. 순진한 해결책은 배열을 사용하여 단어와 그 개수를 저장하는 것이지만, 단어 수가 증가하면 개수를 찾고 업데이트하는 효율성이 떨어집니다.

해시 테이블을 사용하면 각 단어를 카운터에 매핑하고 해당 단어를 직접 키로 사용할 수 있습니다. 단어를 만나면 해시 테이블에 키가 있는지 빠르게 확인할 수 있고, 없으면 추가하고 개수를 1로 설정합니다. 그렇다면 개수에 1을 더합니다.

class WordCounter {
    private $words = [];

    public function countWords($text) {
        $words = explode(' ', $text);
        foreach ($words as $word) {
            if (isset($this->words[$word])) {
                $this->words[$word]++;
            } else {
                $this->words[$word] = 1;
            }
        }
    }

    public function getWordCount($word) {
        return $this->words[$word] ?? 0;
    }
}

이 예에서 $words数组充当哈希表,键是单词,值是计数。函数countWords()高效地计算每个单词的计数,而函数getWordCount()를 사용하면 특정 단어의 개수를 빠르게 검색할 수 있습니다.

위 내용은 PHP 데이터 구조: 빠른 쿼리 마이닝을 위한 강력한 도구인 해시 테이블의 비밀의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.