Les tableaux sont le type de données le plus couramment utilisé en PHP. En même temps, PHP est facile à utiliser grâce à ses tableaux puissants, mais comment les tableaux sont-ils implémentés en PHP ?
Tutoriel recommandé : Tutoriel vidéo PHP
Tout d'abord, comprenons d'abord la structure de données pertinente, comme suit Établir une base solide pour le contenu
Table de hachage
La table de hachage, comme son nom l'indique, est une sorte de mappage de différents mots-clés à différents structure de données des unités. La méthode de mappage de différents mots-clés à différentes unités est appelée fonction de hachage
Idéalement, après le traitement de la fonction de hachage, les mots-clés et les unités correspondront un à un, mais si la valeur du mot-clé est suffisante, dans de nombreux cas, c'est le cas ; il est facile de mapper plusieurs mots-clés sur la même unité, c'est-à-dire des conflits de hachage
La solution aux conflits de hachage est d'utiliser soit la méthode de chaînage, soit la méthode d'adressage ouverte
Lien méthode
Autrement dit, lorsque différents mots-clés sont mappés à la même unité, une liste chaînée est utilisée pour enregistrer ces mots-clés dans la même unité
Méthode d'adressage ouverte
Autrement dit, lors de l'insertion de données, s'il s'avère qu'il y a des données dans l'unité à laquelle le mot-clé est mappé, cela signifie qu'un conflit s'est produit, puis continuez à rechercher l'unité suivante jusqu'à ce qu'une unité disponible soit trouvée
Et comme la méthode d'adressage ouverte occupe l'emplacement d'autres unités de mappage de mots-clés, les mots-clés suivants sont plus susceptibles d'avoir des conflits de hachage et sont donc sujets à une dégradation des performances
Lié list
Puisque nous avons mentionné les listes chaînées ci-dessus, nous parlons brièvement ici des bases des listes chaînées. Les listes chaînées sont divisées en plusieurs types. Les structures de données couramment utilisées incluent : la file d'attente, la pile, la liste chaînée bidirectionnelle, etc.
Une liste chaînée est une structure de données composée de différents nœuds de liste chaînée. Un nœud de liste chaînée se compose généralement d’un élément + un pointeur vers le nœud suivant. La liste doublement chaînée, comme son nom l'indique, est composée d'un pointeur vers le nœud précédent + un élément + un pointeur vers le nœud suivant
Quant au contenu de la structure de données, nous ne nous développerons pas trop .Nous aurons un contenu spécial plus tard. Introduction détaillée à la structure des données
tableau php
La façon dont PHP résout les conflits de hachage est d'utiliser le. méthode de chaînage, donc le tableau PHP est composé de table de hachage + implémentation de liste chaînée, pour être précis, est implémentée par table de hachage + liste doublement chaînée.
Structure interne - Table de hachage
La structure HashTable est principalement utilisée pour stocker les informations de base de la table de hachage
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
La structure Bucket est utilisée Le contenu spécifique des données enregistrées
1 2 3 4 5 6 7 8 9 10 11 12 |
|
Il y a un élément pData dans la structure Bucket qui pointe vers les données utilisateur, qui pointe en fait vers la structure variable zval que nous avons introduite précédemment. C'est pourquoi lors de la création d'un tableau, l'élément du tableau + apparaît 1 conteneur de variable.
Schéma de la structure interne de la table de hachage
À partir de la figure ci-dessus, nous pouvons voir que lorsque Bucket stocke des données, s'il y a un conflit de hachage, plusieurs mots-clés seront mappés à la liste chaînée, formant ainsi une liste doublement chaînée
Résumé
Aujourd'hui, nous utilisons des tableaux comme le point de départ, nous avons brièvement compris les structures de données de base : tables de hachage et listes chaînées ; et avons également appris l'implémentation sous-jacente des tableaux, c'est-à-dire tables de hachage + listes doublement chaînées. En fait, la table de hachage est la structure de données la plus importante en PHP et a de nombreuses utilisations. Les tables de symboles variables, les listes de fonctions, etc. sont toutes stockées à l'aide de tables de hachage
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!