ホームページ >バックエンド開発 >PHPチュートリアル >PHPデータ構造:ハッシュテーブルの実装原理、高速データ検索の秘密を探る
ハッシュ テーブルは、データを固定サイズの配列 (「バケット」) にマッピングすることで高速な検索を可能にする効率的なデータ構造です。各バケットには同じキーを持つデータが含まれています。 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 中国語 Web サイトの他の関連記事を参照してください。