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 ?

Comment créer de manière récursive un tableau multidimensionnel à partir de données de base de données hiérarchiques ?

DDD
DDDoriginal
2024-12-16 03:10:09948parcourir

How to Recursively Build a Multidimensional Array from Hierarchical Database Data?

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!

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