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 ?
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!