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 相关文章推荐
从网上搜到的phpwind 0day的代码
Dec 07 PHP
追求程序速度,而不是编程的速度
Apr 23 PHP
令PHP初学者头疼十四条问题大总结
Nov 12 PHP
smarty模板嵌套之include与fetch性能测试
Dec 05 PHP
php中的四舍五入函数代码(floor函数、ceil函数、round与intval)
Jul 14 PHP
使用新浪微博API的OAuth认证发布微博实例
Mar 27 PHP
解决PHP里大量数据循环时内存耗尽的方法
Oct 10 PHP
PHP实现数组array转换成xml的方法
Jul 19 PHP
php版微信js-sdk支付接口类用法示例
Oct 12 PHP
Yii2 加载css、js 载静态资源的方法
Mar 10 PHP
ThinkPHP框架分布式数据库连接方法详解
Mar 14 PHP
Laravel实现定时任务的示例代码
Aug 10 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随机生成数字字母组合的方法
2015/03/18 PHP
PHP 等比例缩放图片详解及实例代码
2016/09/18 PHP
JQuery 无废话系列教程(一) jquery入门 [推荐]
2009/06/23 Javascript
jquery 插件学习(三)
2012/08/06 Javascript
js和html5实现手机端刮刮卡抽奖效果完美兼容android/IOS
2013/11/18 Javascript
javascript实现的多个层切换效果通用函数实例
2015/07/06 Javascript
Easyui form combobox省市区三级联动
2016/01/13 Javascript
Hallo.js基于jQuery UI所见即所得的Web编辑器
2016/01/26 Javascript
javascript下使用Promise封装FileReader
2016/02/19 Javascript
使用Jasmine和Karma对AngularJS页面程序进行测试
2016/03/05 Javascript
关于Jquery中的事件绑定总结
2016/10/26 Javascript
JS判断微信扫码的方法
2017/08/07 Javascript
JS和Canvas实现图片的预览压缩和上传功能
2018/03/30 Javascript
JavaScript设计模式之职责链模式应用示例
2018/08/07 Javascript
解决jQuery使用append添加的元素事件无效的问题
2018/08/30 jQuery
Node.js API详解之 zlib模块用法分析
2020/05/19 Javascript
vue界面发送表情的实现代码
2020/09/11 Javascript
NodeJS开发人员常见五个错误理解
2020/10/14 NodeJs
Python正则简单实例分析
2017/03/21 Python
python中numpy.zeros(np.zeros)的使用方法
2017/11/07 Python
TensorFlow实现随机训练和批量训练的方法
2018/04/28 Python
python视频按帧截取图片工具
2019/07/23 Python
python-序列解包(对可迭代元素的快速取值方法)
2019/08/24 Python
Django发送邮件功能实例详解
2019/09/02 Python
解析PyCharm Python运行权限问题
2020/01/08 Python
python opencv圆、椭圆与任意多边形的绘制实例详解
2020/02/06 Python
django 实现后台从富文本提取纯文本
2020/07/02 Python
详解Pymongo常用查询方法总结
2021/01/29 Python
27个经典Linux面试题及答案,你知道几个?
2014/03/11 面试题
新闻专业应届生求职信
2013/10/31 职场文书
在校生自我鉴定
2014/01/23 职场文书
《与朱元思书》的教学反思
2014/04/17 职场文书
大学课外活动总结
2014/07/09 职场文书
骨干教师个人总结
2015/02/11 职场文书
暖春观后感
2015/06/08 职场文书
经营场所证明范本
2015/06/19 职场文书