Maison  >  Article  >  développement back-end  >  Comment construire une structure arborescente hiérarchique à partir d'un tableau plat en PHP ?

Comment construire une structure arborescente hiérarchique à partir d'un tableau plat en PHP ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-27 18:33:15181parcourir

How to Build a Hierarchical Tree Structure from a Flat Array in PHP?

Construire une structure arborescente à partir d'un tableau plat en PHP

Problème :

Vous avez un tableau plat composé d'éléments avec des champs « id » et « parent_id », où chaque élément peut avoir au plus un parent et zéro ou plusieurs enfants. Lorsque 'parent_id' vaut 0, l'élément est un élément de niveau racine. Le but est de restructurer ce tableau plat en un arbre hiérarchique avec des relations enfant-parent.

Solution :

La fonction fournie, buildTree(), accomplit efficacement cette tâche en parcourant le tableau d'entrée et en construisant de manière récursive la structure arborescente. Chaque élément de l'arborescence de sortie contient son ID, son ID parent et un tableau d'éléments enfants.

Implémentation :

function buildTree(array &$elements, $parentId = 0) {
    $branch = array();

    foreach ($elements as $element) {
        if ($element['parent_id'] == $parentId) {
            $children = buildTree($elements, $element['id']);
            if ($children) {
                $element['children'] = $children;
            }
            $branch[] = $element;
            unset($elements[$element['id']]);
        }
    }

    return $branch;
}

Le « non défini » Appel :

Dans le code ci-dessus, l'appel unset() est crucial pour maintenir la structure hiérarchique. Il supprime les éléments traités du tableau d'entrée d'origine, garantissant que les éléments ne sont pas dupliqués dans l'arborescence.

Exemple :

Considérez le tableau d'entrée fourni :

[_319_] => [...],
[_320_] => [...],
[_321_] => [...],
[_322_] => [...],
[_323_] => [...],
[_324_] => [...],
[_325_] => [...]

Après le traitement, l'arborescence de sortie maintient les relations parent-enfant :

[_319_] => [...],
[_320_] => [
    'id' => '_320_',
    'parent_id' => 0,
    'children' => [
        [_321_] => [...],
        [_325_] => [...]
    ]
],
[_323_] => [
    'id' => '_323_',
    'parent_id' => 0,
    'children' => [
        [_324_] => [...]
    ]
]

Par conséquent, le La fonction buildTree() vous permet de transformer un tableau plat d'éléments avec des relations parent-enfant en un arbre hiérarchique structuré en PHP.

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