Maison >développement back-end >tutoriel php >Comment créer de manière récursive un tableau multidimensionnel à partir de données de base de données hiérarchiques ?
Génération récursive de tableaux multidimensionnels à partir d'un résultat de base de données
Dans ce scénario, l'objectif est de construire une représentation matricielle imbriquée de données hiérarchiques extraites de une requête de base de données. Le tableau des résultats contient des pages ou des catégories avec des relations parent-enfant.
Pour ce faire, nous utilisons une fonction récursive, buildTree(). Cette fonction prend un tableau d'éléments et un ID parent facultatif (la valeur par défaut est 0). Il parcourt chaque élément, identifiant ceux qui ont l'ID parent spécifié.
Pour chaque élément enfant, la fonction s'appelle de manière récursive pour obtenir son sous-arbre. L'élément enfant est ensuite augmenté de ses enfants, ce qui donne une structure hiérarchique. Ce processus se poursuit jusqu'à ce que tous les éléments soient traités, produisant un tableau imbriqué qui reflète la structure hiérarchique des données.
Exemple
Considérez la table de base de données fournie précédemment :
id | parent_id | title |
---|---|---|
1 | 0 | Parent Page |
2 | 1 | Sub Page |
3 | 2 | Sub Sub Page |
4 | 0 | Another Parent Page |
En utilisant la fonction buildTree(), nous pouvons générer le fichier imbriqué souhaité array :
$elements = [ ['id' => 1, 'parent_id' => 0, 'title' => 'Parent Page'], ['id' => 2, 'parent_id' => 1, 'title' => 'Sub Page'], ['id' => 3, 'parent_id' => 2, 'title' => 'Sub Sub Page'], ['id' => 4, 'parent_id' => 0, 'title' => 'Another Parent Page'], ]; $tree = buildTree($elements);
Le $tree de sortie sera :
[ [ 'id' => 1, 'parent_id' => 0, 'title' => 'Parent Page', 'children' => [ [ 'id' => 2, 'parent_id' => 1, 'title' => 'Sub Page', 'children' => [ [ 'id' => 3, 'parent_id' => 2, 'title' => 'Sub Sub Page', ] ] ] ] ], [ 'id' => 4, 'parent_id' => 0, 'title' => 'Another Parent Page', ] ]
Ce tableau imbriqué préserve les relations hiérarchiques définies dans la table de la base de données, permettant un accès et un traitement efficaces des données dans les structures.
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!