PHP递归实现层级树状展开

 更新时间:2016年04月01日 16:00:20   作者:mickelfeng  
这篇文章主要为大家详细介绍了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('&nbsp;&nbsp;&nbsp;&nbsp;', $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);

以上就是本文的全部内容,希望对大家学习php程序设计有所帮助。

相关文章

  • php实现分页功能的详细实例方法

    php实现分页功能的详细实例方法

    在本篇文章里小编给大家整理的是关于php实现分页功能的详细实例方法,有需要的朋友们可以学习下。
    2019-09-09
  • 解析php中如何直接执行SHELL

    解析php中如何直接执行SHELL

    本篇文章是对php中直接执行SHELL的方法进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • 使用PHP的日期与时间函数技巧

    使用PHP的日期与时间函数技巧

    任何一种语言,日期和时间函数都是我们常使用的,下面就教你PHP下的日期和时间的技巧
    2008-04-04
  • PHP json_encode中文乱码解决方法

    PHP json_encode中文乱码解决方法

    这篇文章主要介绍了PHP json_encode中文乱码解决方法,有遇到此类问题的同学,可以参考一下
    2021-04-04
  • php数字转汉字代码(算法)

    php数字转汉字代码(算法)

    php数字转汉字代码(算法),学习php的朋友可以参考下。
    2011-10-10
  • 浅析PHP7的多进程及实例源码

    浅析PHP7的多进程及实例源码

    在本篇内容里小编给大家分享了关于PHP7之多进程的相关概念和实例代码知识点,需要的朋友们跟着学习下。
    2019-04-04
  • 深入理解PHP原理之异常机制

    深入理解PHP原理之异常机制

    在PHP每一个可独立执行的op array最后的ZEND_HANDLE_EXCEPTION是用来干什么呢?
    2010-08-08
  • PHP设计模式 注册表模式

    PHP设计模式 注册表模式

    注册表模式其实是一个单例模式,注册表类提供静态方法(或单例对象的实例化方法)来让其它对象访问其中的数据(通常是对象)。整个系统中的每个对象都可以访问这些数据对象
    2012-02-02
  • php使用GuzzleHttp实现HTTP请求

    php使用GuzzleHttp实现HTTP请求

    这篇文章主要为大家详细介绍了php如何使用GuzzleHttp实现HTTP请求,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-11-11
  • 利用PHP_XLSXWriter代替PHPExcel的方法示例

    利用PHP_XLSXWriter代替PHPExcel的方法示例

    PHPExcel是一个处理Excel,CVS文件的开源框架,但不幸的是PHPExcel官方已不再维护了这个项目了,官方团队在github上又起了一个新项目,叫PhpSpreadsheet。那么这篇文章主要给大家介绍了关于利用PHP_XLSXWriter代替PHPExcel的方法示例,需要的朋友可以参考下。
    2017-07-07

最新评论