Maison  >  Article  >  développement back-end  >  Comment implémenter l'expansion d'arborescence hiérarchique de manière récursive en PHP

Comment implémenter l'expansion d'arborescence hiérarchique de manière récursive en PHP

墨辰丷
墨辰丷original
2018-06-04 10:42:111760parcourir

Cet article présente principalement en détail les informations pertinentes sur l'implémentation récursive PHP de l'expansion de l'arborescence hiérarchique. Les amis dans le besoin peuvent se référer aux

rendus :

Code d'implémentation :

<?php 
  
$db = mysql_connect(&#39;localhost&#39;, &#39;root&#39;, &#39;root&#39;) or die(&#39;Can\&#39;t connect to database&#39;); 
mysql_select_db(&#39;test&#39;) or die(&#39;Can\&#39;t find database : test&#39;); 
$result = mysql_query(&#39;select id, fid, name from tree&#39;); 
while($arr = mysql_fetch_array($result)){ 
  $data[] = array( 
    &#39;id&#39; => $arr[&#39;id&#39;],  
    &#39;fid&#39; => $arr[&#39;fid&#39;], 
    &#39;name&#39; => $arr[&#39;name&#39;],  
  ); 
} 
  
// 将数据按照缩进简单排列 见图1 
function data2arr($tree, $rootId = 0, $level = 0) { 
  foreach($tree as $leaf) { 
    if($leaf[&#39;fid&#39;] == $rootId) { 
      echo str_repeat(&#39;    &#39;, $level) . $leaf[&#39;id&#39;] . &#39; &#39; . $leaf[&#39;name&#39;] . &#39;<br/>&#39;; 
      foreach($tree as $l) { 
        if($l[&#39;fid&#39;] == $leaf[&#39;id&#39;]) { 
          data2arr($tree, $leaf[&#39;id&#39;], $level + 1); 
          break; 
        } 
      } 
    } 
  } 
} 
  
data2arr($data); 
echo &#39;<br/>-----------------------------------------------------------------------<br/>&#39;; 
  
// 将数据按照所属关系封装 见图2 
function arr2tree($tree, $rootId = 0) { 
  $return = array(); 
  foreach($tree as $leaf) { 
    if($leaf[&#39;fid&#39;] == $rootId) { 
      foreach($tree as $subleaf) { 
        if($subleaf[&#39;fid&#39;] == $leaf[&#39;id&#39;]) { 
          $leaf[&#39;children&#39;] = arr2tree($tree, $leaf[&#39;id&#39;]); 
          break; 
        } 
      } 
      $return[] = $leaf; 
    } 
  } 
  return $return; 
} 
  
$tree = arr2tree($data); 
print_r($tree); 
echo &#39;<br/>-----------------------------------------------------------------------<br/>&#39;; 
  
// 将数据使用HTML再次展现 见图3 
function tree2html($tree) { 
  echo &#39;<ul>&#39;; 
  foreach($tree as $leaf) { 
    echo &#39;<li>&#39; .$leaf[&#39;name&#39;]; 
    if(! emptyempty($leaf[&#39;children&#39;])) tree2html($leaf[&#39;children&#39;]); 
    echo &#39;</li>&#39;; 
  } 
  echo &#39;</ul>&#39;; 
} 
  
tree2html($tree);
Résumé : Ce qui précède est l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'apprentissage de chacun.

Recommandations associées :

phpComment déterminer le format via l'en-tête du fichier

php Utilisation et exemple d'analyse de la fonction time

Explication détaillée de l'exemple d'utilisation renvoyé par la référence 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