Maison > base de données > tutoriel mysql > le corps du texte

Comment puis-je convertir les résultats d'une base de données en un tableau multidimensionnel pour représenter une structure de données hiérarchique ?

Mary-Kate Olsen
Libérer: 2024-11-07 16:23:03
original
936 Les gens l'ont consulté

How can I convert database results into a multidimensional array to represent a hierarchical data structure?

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

Introduction

Cette discussion se concentre sur la récupération d'une structure de données hiérarchique à partir d'une base de données et sa conversion en un tableau multidimensionnel dans une seule requête. Le but est d'obtenir un tableau représentant la structure arborescente des données.

Solution

Pour extraire une structure arborescente d'une base de données, une table de fermeture est couramment utilisée. Une table de fermeture enregistre les relations entre les ancêtres et les descendants au sein d'une hiérarchie, permettant une interrogation efficace des descendants.

Requête SQL

Étant donné la clé primaire d'un nœud, il est possible d'interroger ses descendants à l'aide de SQL. en procédant comme suit :

  1. Rejoignez la table de fermeture avec la table principale pour trouver tous les descendants.
  2. Rejoignez éventuellement une autre instance de la table de fermeture pour inclure les informations sur les parents.
  3. Limitez le nombre de niveaux à récupérer en fonction du paramètre de profondeur.
  4. Classez les résultats selon leur distance par rapport au nœud racine.

Post-traitement

Le résultat SQL est ensuite traité de la manière suivante :

  1. Les lignes sont triées en sous-ensembles en fonction de leur relation hiérarchique.
  2. Chaque ligne est convertie en un objet ligne, qui comprend une collection de lignes enfants.
  3. Une classe rowset est utilisée pour représenter une collection de lignes, chacune contenant ses enfants.
  4. L'arbre résultant est construit en partant du nœud racine et en ajoutant récursivement ses enfants.

Exemple de code

En PHP, en utilisant le Zend Framework, le code suivant démontre le processus :

// Get taxonomy table instance
$tax = new Taxonomy();

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

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

Sortie

La sortie est un tableau multidimensionnel représentant la structure arborescente des données, tel que :

array (
  'tsn' => '180130',
  'completename' => 'Rodentia',
  '_parent' => '179925',
  '_children' => [
    // Child rows...
  ],
)
Copier après la connexion

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