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

Barbara Streisand
Libérer: 2024-11-27 18:33:15
original
183 Les gens l'ont consulté

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;
}
Copier après la connexion

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_] => [...]
Copier après la connexion

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_] => [...]
    ]
]
Copier après la connexion

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!

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