PHP递归实现层级树状展开


Posted in PHP onApril 01, 2016

本文实例为大家分享了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);

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

PHP 相关文章推荐
Banner程序
Oct 09 PHP
有关 PHP 和 MySQL 时区的一点总结
Mar 26 PHP
PHP中使用sleep造成mysql读取失败的案例和解决方法
Aug 21 PHP
php中getservbyport与getservbyname函数用法实例
Nov 18 PHP
PHP获取ip对应地区和使用网络类型的方法
Mar 11 PHP
php中使用gd库实现下载网页中所有图片
May 12 PHP
PHP大文件分割上传 PHP分片上传
Aug 28 PHP
thinkphp 中的volist标签在ajax操作中的特殊性(推荐)
Jan 15 PHP
PHP实现通过strace定位故障原因的方法
Apr 29 PHP
Laravel框架使用Seeder实现自动填充数据功能
Jun 13 PHP
PHP异常类及异常处理操作实例详解
Dec 19 PHP
laravel使用redis队列实例讲解
Mar 23 PHP
详解PHP的Yii框架中扩展的安装与使用
Apr 01 #PHP
PHP使用SOAP扩展实现WebService的方法
Apr 01 #PHP
PHP全局变量与超级全局变量区别分析
Apr 01 #PHP
PHP计算数组中值的和与乘积的方法(array_sum与array_product函数)
Apr 01 #PHP
PHP采用超长(超大)数字运算防止数字以科学计数法显示的方法
Apr 01 #PHP
Zend Studio使用技巧两则
Apr 01 #PHP
PHP数学运算与数据处理实例分析
Apr 01 #PHP
You might like
php完全过滤HTML,JS,CSS等标签
2009/01/16 PHP
phpMyAdmin 安装配置方法和问题解决
2009/06/08 PHP
PHP使用glob函数遍历目录或文件夹的方法
2014/12/16 PHP
php+mysql查询优化简单实例
2015/01/13 PHP
php的4种常用运行方式详解
2016/12/22 PHP
基于swoole实现多人聊天室
2018/06/14 PHP
laravel框架实现后台登录、退出功能示例
2019/10/31 PHP
各种常用浏览器getBoundingClientRect的解析
2009/05/21 Javascript
js判断背景图片是否加载成功使用img的width实现
2013/05/29 Javascript
利用ajaxfileupload插件实现文件上传无刷新的具体方法
2013/06/08 Javascript
7个去伪存真的JavaScript面试题
2016/01/07 Javascript
Node.js+Express配置入门教程详解
2016/05/19 Javascript
JavaScript+Html5实现按钮复制文字到剪切板功能(手机网页兼容)
2017/03/30 Javascript
jQuery中hover方法搭配css的hover选择器,实现选中元素突出显示方法
2017/05/08 jQuery
详解vue slot插槽的使用方法
2017/06/13 Javascript
浅谈webpack对样式的处理
2018/01/05 Javascript
vue中的inject学习教程
2019/04/24 Javascript
封装微信小程序http拦截器过程解析
2019/08/13 Javascript
layui中select,radio设置不生效的解决方法
2019/09/05 Javascript
mpvue网易云短信接口实现小程序短信登录的示例代码
2020/04/03 Javascript
解决vue字符串换行问题(绝对管用)
2020/08/06 Javascript
[09:13]DOTA2-DPC中国联赛 正赛 Ehome vs Magma 选手采访 1月19日
2021/03/11 DOTA
Python with的用法
2014/08/22 Python
python实现简单socket通信的方法
2016/04/19 Python
Python实现的购物车功能示例
2018/02/11 Python
python读csv文件时指定行为表头或无表头的方法
2019/06/26 Python
python pandas利用fillna方法实现部分自动填充功能
2020/03/16 Python
英国殿堂级有机护肤品牌:Rodial
2017/04/17 全球购物
索引覆盖(Index Covering)查询含义
2012/02/18 面试题
销售主管岗位职责范本
2014/02/14 职场文书
党员违纪检讨书
2014/02/18 职场文书
创意广告词
2014/03/17 职场文书
查摆问题整改措施范文
2014/10/11 职场文书
英语教师个人总结
2015/02/09 职场文书
军训结束新闻稿
2015/07/17 职场文书
Python中使用Opencv开发停车位计数器功能
2022/04/04 Python