您的位置:首页 > 数码常识数码常识

PHP递归实现层级树状展开的方法(树的层次遍历递归)

2025-05-13人已围观

PHP递归实现层级树状展开的方法(树的层次遍历递归)
  这篇文章主要为大家详细介绍了PHP递归实现层级树状展开的相关资料,需要的朋友可以参考下

  树的层次遍历递归

  效果图:

  实现代码:

  <?php

  $db=mysql_connect('localhost', 'root', 'root') or die('Can't connect to database');

  mysql_select_db('test') or die('Can't find database : test');

  $result=mysql_query('select id, fid, name from tree');

  while($arr=mysql_fetch_array($result)){

  $data[]=array(

  'id'=> $arr['id'],

  'fid'=> $arr['fid'],

  'name'=> $arr['name'],

  );

  }

  // 将数据按照缩进简单排列 见图1

  function data2arr($tree, $rootId=0, $level=0) {

  foreach($tree as $leaf) {

  if($leaf['fid']==$rootId) {

  echo str_repeat(' ', $level) . $leaf['id'] . ' ' . $leaf['name'] . '<br/>';

  foreach($tree as $l) {

  if($l['fid']==$leaf['id']) {

  data2arr($tree, $leaf['id'], $level + 1);

  break;

  }

  }

  }

  }

  }

  data2arr($data);

  echo '<br/>-----------------------------------------------------------------------<br/>';

  // 将数据按照所属关系封装 见图2

  function arr2tree($tree, $rootId=0) {

  $return=array();

  foreach($tree as $leaf) {

  if($leaf['fid']==$rootId) {

  foreach($tree as $subleaf) {

  if($subleaf['fid']==$leaf['id']) {

  $leaf['children']=arr2tree($tree, $leaf['id']);

  break;

  }

  }

  $return[]=$leaf;

  }

  }

  return $return;

  }

  $tree=arr2tree($data);

  print_r($tree);

  echo '<br/>-----------------------------------------------------------------------<br/>';

  // 将数据使用HTML再次展现 见图3

  function tree2html($tree) {

  echo '<ul>';

  foreach($tree as $leaf) {

  echo '<li>' .$leaf['name'];

  if(! emptyempty($leaf['children'])) tree2html($leaf['children']);

  echo '</li>';

  }

  echo '</ul>';

  }

  tree2html($tree);

  总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。

  上面就是小居数码小编今天给大家介绍的关于(树的层次遍历递归)的全部内容,希望可以帮助到你,想了解更多关于数码知识的问题,欢迎关注我们,并收藏,转发,分享。

  94%的朋友还想知道的:

  多维数组遍历PHP(PHP二维数组遍历)

  for循环的遍历(遍历循环for的使用方法)

  js数组遍历的几种方式(js中数组遍历的几种方法及其区别)

  java中二维数组的遍历(java二维数组循环赋值)



  155684
 

很赞哦! ()

随机图文