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 相关文章推荐
深入了解php4(2)--重访过去
Oct 09 PHP
PHP学习之PHP变量
Oct 09 PHP
PHP 批量更新网页内容实现代码
Jan 05 PHP
PHP UTF8中文字符截断函数代码
Sep 11 PHP
CodeIgniter上传图片成功的全部过程分享
Aug 12 PHP
PHP图片等比缩放类SimpleImage使用方法和使用实例分享
Apr 10 PHP
简单说说PHP优化那些事(经验分享)
Nov 27 PHP
php中magic_quotes_gpc对unserialize的影响分析
Dec 16 PHP
php+mysqli数据库连接的两种方式
Jan 28 PHP
php中文繁体和简体相互转换的方法
Mar 21 PHP
利用php的ob缓存机制实现页面静态化方法
Jul 09 PHP
php实现微信小程序授权登录功能(实现流程)
Nov 13 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摘要生成函数(无乱码)
2012/02/04 PHP
smarty获得当前url的方法分享
2014/02/14 PHP
PHP explode()函数的几个应用和implode()函数有什么区别
2015/11/05 PHP
js创建子窗口并且回传值示例代码
2013/07/02 Javascript
JavaScript中“过于”犀利地for/in循环使用示例
2013/10/22 Javascript
浅析JavaScript事件和方法
2015/02/28 Javascript
JS+CSS实现类似QQ好友及黑名单效果的树型菜单
2015/09/22 Javascript
JavaScript实现输入框(密码框)出现提示语
2016/01/12 Javascript
js生成随机数(指定范围)的实例代码
2016/07/10 Javascript
Jquery实现遮罩层的简单实例(就是弹出DIV周围都灰色不能操作)
2016/07/14 Javascript
JS多文件上传的实例代码
2017/01/11 Javascript
jQuery实现的浮动层div浏览器居中显示效果
2017/02/03 Javascript
bootstrap suggest下拉框使用详解
2017/04/10 Javascript
使用重写url机制实现验证码换一张功能
2017/08/01 Javascript
详解Vuejs2.0 如何利用proxyTable实现跨域请求
2017/08/03 Javascript
vue中vee validate表单校验的几种基本使用
2018/06/25 Javascript
JS获取当前时间的实例代码(昨天、今天、明天)
2018/11/13 Javascript
微信小程序背景音乐开发详解
2019/12/12 Javascript
深入理解Antd-Select组件的用法
2020/02/25 Javascript
浅谈Python中的数据类型
2015/05/05 Python
基于Python Shell获取hostname和fqdn释疑
2016/01/25 Python
Django 开发调试工具 Django-debug-toolbar使用详解
2019/07/23 Python
python修改字典键(key)的方法
2019/08/05 Python
VSCode中自动为Python文件添加头部注释
2019/11/14 Python
使用python无账号无限制获取企查查信息的实例代码
2020/04/17 Python
Python grpc超时机制代码示例
2020/09/14 Python
提高python代码运行效率的一些建议
2020/09/29 Python
python 利用Pyinstaller打包Web项目
2020/10/23 Python
英国皇家邮政海外旗舰店:Royal Mail
2018/02/21 全球购物
运动会通讯稿400字
2014/01/28 职场文书
学校出纳员岗位职责
2014/03/18 职场文书
工艺技术员岗位职责
2015/02/04 职场文书
2015年医务人员医德医风自我评价
2015/03/03 职场文书
银行实习推荐信
2015/03/27 职场文书
任命通知范文
2015/04/21 职场文书
2016年会开场白台词
2015/06/01 职场文书