Maison  >  Article  >  base de données  >  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
Susan Sarandonoriginal
2024-11-07 00:52:02785parcourir

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  

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)
                     );

 );

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;

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());

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!

Déclaration:
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