해시 테이블은 데이터를 고정 크기 배열("버킷")에 매핑하여 빠른 조회를 가능하게 하는 효율적인 데이터 구조입니다. 각 버킷에는 동일한 키를 가진 데이터가 포함되어 있습니다. PHP의 해시 테이블은 해시 함수를 사용하여 모든 크기의 데이터를 해시 테이블의 데이터 버킷을 계산하는 데 사용되는 고정 길이 정수로 변환합니다.
PHP 데이터 구조: 해시 테이블의 구현 원리, 빠른 데이터 검색의 비밀 탐구
소개
해시 테이블(해시 테이블)은 빠른 데이터 검색을 위한 효율적인 데이터 구조입니다. 데이터를 고정 크기 배열인 "버킷"에 매핑하여 빠른 조회를 달성합니다. 각 버킷에는 동일한 키를 가진 데이터가 포함되어 있습니다.
구현 원리
PHP에서 해시 테이블의 구현 원리는 해시 함수를 기반으로 합니다. 해시 함수는 모든 크기의 데이터를 고정 길이 정수로 변환합니다. 이 정수는 해시 테이블에서 데이터가 삽입되는 버킷을 계산하는 데 사용됩니다.
코드 구현: 사용자 정의 해시 테이블
다음은 PHP에서 해시 테이블을 구현하는 샘플 코드입니다:
class HashTable { private $buckets = []; private $size = 0; public function __construct($size) { $this->size = $size; } public function hash(string $key): int { return crc32($key) % $this->size; } public function set(string $key, $value): void { $index = $this->hash($key); $this->buckets[$index][$key] = $value; } public function get(string $key): mixed { $index = $this->hash($key); if (isset($this->buckets[$index][$key])) { return $this->buckets[$index][$key]; } else { return null; } } }
실제 사례: 직원을 연령별로 그룹화
직원의 연령을 포함하는 배열이 있다고 가정합니다. 그리고 우리는 연령별로 그룹 직원을 원합니다. 해시 테이블을 사용하면 같은 나이의 직원을 빠르게 찾을 수 있습니다.
$ages = [25, 30, 28, 35, 32, 25, 30]; $hashTable = new HashTable(count($ages)); foreach ($ages as $age) { $hashTable->set($age, []); } foreach ($ages as $age) { $hashTable->get($age)[] = $age; } var_dump($hashTable->buckets);
출력 결과:
array( 25 => array(25, 25), 30 => array(30, 30), 28 => array(28), 35 => array(35), 32 => array(32) )
위 내용은 PHP 데이터 구조: 해시 테이블 구현 원리, 빠른 데이터 검색의 비밀 탐구의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!