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

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

Susan Sarandon
Susan Sarandonoriginal
2024-11-26 20:13:16148parcourir

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

Construire un arbre à partir d'un tableau plat en PHP

Une tâche courante lorsque l'on travaille avec des structures de données hiérarchiques consiste à convertir un tableau plat en un structure arborescente. Cela peut être fait en identifiant les relations parent-enfant et les éléments d'imbrication en conséquence.

Une façon d'aborder cela consiste à parcourir le tableau et à examiner la valeur parent_id de chaque élément. Si le parent_id d'un élément est nul, il est considéré comme un élément de niveau racine. Pour les autres éléments, leurs parent_ids peuvent être utilisés pour déterminer leur hiérarchie au sein de l'arborescence.

Pour conserver le tableau d'origine, il est recommandé de créer des copies des éléments au fur et à mesure de leur ajout à l'arborescence. Ceci peut être réalisé en utilisant la fonction array_values().

Voici un exemple d'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;
    }
  }

  return $branch;
}

Pour éviter les éléments en double dans l'arborescence résultante, il est crucial de supprimer les éléments traités de l'arbre résultant. tableau d'origine. Cela peut être fait en ajoutant une ligne de code dans la boucle :

unset($elements[$element['id']]);

En utilisant cette fonction révisée, le tableau plat peut être converti en une structure arborescente hiérarchique. Le résultat sera un tableau avec des éléments enfants imbriqués sous chaque élément parent.

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