Maison > base de données > tutoriel mysql > Comment convertir les résultats d'une base de données en un tableau multidimensionnel à l'aide d'une table de fermeture ?

Comment convertir les résultats d'une base de données en un tableau multidimensionnel à l'aide d'une table de fermeture ?

Susan Sarandon
Libérer: 2024-11-07 00:52:02
original
870 Les gens l'ont consulté

How to Convert Database Results into a Multidimensional Array Using a Closure Table?

Conversion des résultats d'une base de données en tableau multidimensionnel

Dans le domaine de la gestion des données, il est souvent nécessaire d'organiser et de présenter des structures de données hiérarchiques dans un utilisateur -format convivial et facile à digérer. Pour y parvenir, l’approche « Table de clôture » peut être une solution efficace. Cette technique implique de conserver une table séparée pour stocker les relations entre les éléments hiérarchiques, connue sous le nom de table de fermeture.

En utilisant une table de fermeture, il devient possible de récupérer efficacement des sous-arbres et de générer des arrangements de données hiérarchiques. Par exemple, considérons l'exemple suivant :

Table Categories:

ID         Name
1          Top value
2          Sub value1

Table CategoryTree:

child     parent     level
1          1         0
2          2         0  
2          1         1  
Copier après la connexion

L'objectif est d'obtenir les données hiérarchiques sous forme d'un tableau multidimensionnel. Le résultat souhaité ressemblerait au suivant :

 array (

 'topvalue' = array (
                     'Subvalue',
                     'Subvalue2',
                     'Subvalue3)
                     );

 );
Copier après la connexion

Pour y parvenir, nous pouvons exploiter les requêtes SQL et les techniques de traitement de lignes. Considérons le pseudocode suivant :

while ($rowData = fetch()) {
  $row = new RowObject($rowData);
  $nodes[$row["tsn"]] = $row;
  if (array_key_exists($row["_parent"], $nodes)) {
    $nodes[$row["_parent"]]->addChildRow($row);
  } else {
    $top = $row;
  }
}
return $top;
Copier après la connexion

Ici, nous définissons des classes pour les lignes et les ensembles de lignes, où un ensemble de lignes représente un tableau de lignes et une ligne contient un tableau associatif de données de ligne ainsi qu'un ensemble de lignes pour ses enfants. . Nous définissons également des méthodes dans les lignes et les ensembles de lignes pour vider leurs données sous forme de tableau simple de manière récursive.

Enfin, nous pouvons utiliser l'ensemble de ce système comme suit :

// Get an instance of the taxonomy table data gateway 
$tax = new Taxonomy();

// query tree starting at Rodentia (id 180130), to a depth of 2
$tree = $tax->fetchTree(180130, 2);

// dump out the array
var_export($tree->toArrayDeep());
Copier après la connexion

Ce processus permet une gestion flexible et manipulation personnalisable de données hiérarchiques, offrant une approche élégante et organisée pour présenter des relations complexes.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal