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 相关文章推荐
一篇不错的PHP基础学习笔记
Mar 18 PHP
php 结果集的分页实现代码
Mar 10 PHP
2014年10个最佳的PHP图像操作库
Jul 14 PHP
PHP判断一个字符串是否是回文字符串的方法
Mar 23 PHP
PHP实现的一致性哈希算法完整实例
Nov 14 PHP
深入浅析php json 格式控制
Dec 24 PHP
Yii使用migrate命令执行sql语句的方法
Mar 15 PHP
浅谈PHP值mysql操作类
Jun 29 PHP
PHP字符串逆序排列实现方法小结【strrev函数,二分法,循环法,递归法】
Jan 13 PHP
php+Ajax无刷新验证用户名操作实例详解
Mar 04 PHP
PHP大文件分块上传功能实例详解
Jul 22 PHP
PHP使用PDO实现mysql防注入功能详解
Dec 20 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&amp;mysql(五)
2006/10/09 PHP
php获取某个目录大小的代码
2008/09/10 PHP
php 代码优化之经典示例
2011/03/24 PHP
PHP Directory 函数的详解
2013/03/07 PHP
zf框架db类的分页示例分享
2014/03/14 PHP
laravel 5.1下php artisan migrate的使用注意事项总结
2017/06/07 PHP
php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例
2019/05/09 PHP
toString()一个会自动调用的方法
2010/02/08 Javascript
深入理解JavaScript系列(10) JavaScript核心(晋级高手必读篇)
2012/01/15 Javascript
一行命令搞定node.js 版本升级
2014/07/20 Javascript
把文本中的URL地址转换为可点击链接的JavaScript、PHP自定义函数
2014/07/29 Javascript
兼容最新firefox、chrome和IE的javascript图片预览实现代码
2014/08/08 Javascript
jfreechart插件将数据展示成饼状图、柱状图和折线图
2015/04/13 Javascript
js改变html的原有内容实现方法
2016/10/05 Javascript
JavaScript浏览器对象模型BOM(BrowserObjectModel)实例详解
2016/11/29 Javascript
Angular下H5上传图片的方法(可多张上传)
2017/01/09 Javascript
浅谈vue+webpack项目调试方法步骤
2017/09/11 Javascript
Angular4绑定html内容出现警告的处理方法
2017/11/03 Javascript
nodeJS微信分享
2017/12/20 NodeJs
常见的在Python中实现单例模式的三种方法
2015/04/08 Python
Python基于Tkinter的HelloWorld入门实例
2015/06/17 Python
python中的字符串内部换行方法
2018/07/19 Python
为何人工智能(AI)首选Python?读完这篇文章你就知道了(推荐)
2019/04/06 Python
Python使用import导入本地脚本及导入模块的技巧总结
2019/08/07 Python
selenium+超级鹰实现模拟登录12306
2021/01/24 Python
最畅销的视频游戏享受高达90%的折扣:CDKeys
2020/02/10 全球购物
学期自我鉴定
2013/11/04 职场文书
门卫班长岗位职责
2013/12/15 职场文书
廉洁自律承诺书2015
2015/01/22 职场文书
学校德育工作总结2015
2015/05/11 职场文书
行政复议决定书
2015/06/24 职场文书
公司董事任命书
2015/09/21 职场文书
2015年秋学期教研工作总结
2015/10/14 职场文书
七年级生物教学反思
2016/02/20 职场文书
一道JS算法面试题——冒泡、选择排序
2021/04/21 Javascript
WCG2010 星际争霸决赛 Flash vs Goojila 1 星际经典比赛回顾
2022/04/01 星际争霸