Une table de hachage est une structure de données efficace qui permet des recherches rapides en mappant les données dans des tableaux de taille fixe (« buckets »), chaque bucket contenant des données avec la même clé. Les tables de hachage en PHP utilisent une fonction de hachage pour convertir des données de n'importe quelle taille en un entier de longueur fixe, qui est utilisé pour calculer les compartiments de données dans la table de hachage.
Structure de données PHP : principe de mise en œuvre de la table de hachage, explorez le secret de la recherche rapide de données
Introduction
La table de hachage (table de hachage) est une structure de données efficace pour la recherche rapide de données . Il permet des recherches rapides en mappant les données dans un tableau de taille fixe, un « compartiment ». Chaque bucket contient des données avec la même clé.
Principe d'implémentation
Le principe d'implémentation de la table de hachage en PHP est basé sur la fonction de hachage. Une fonction de hachage convertit les données de n'importe quelle taille en un entier de longueur fixe. Cet entier est utilisé pour calculer le bucket dans lequel les données sont insérées dans la table de hachage.
Implémentation du code : table de hachage personnalisée
Ce qui suit est un exemple de code pour implémenter une table de hachage en 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; } } }
Cas pratique : regrouper les employés par âge
Supposons que nous ayons un tableau contenant l'âge des employés et nous voulons des salariés du Groupe par âge. Nous pouvons utiliser une table de hachage pour trouver rapidement des employés du même âge.
$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);
Résultat de sortie :
array( 25 => array(25, 25), 30 => array(30, 30), 28 => array(28), 35 => array(35), 32 => array(32) )
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!