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 相关文章推荐
Apache设置虚拟WEB
Oct 09 PHP
有关JSON以及JSON在PHP中的应用
Apr 09 PHP
晋城吧对DiscuzX进行的前端优化要点
Sep 05 PHP
基于Snoopy的PHP近似完美获取网站编码的代码
Oct 23 PHP
改写函数实现PHP二维/三维数组转字符串
Sep 13 PHP
php安装xdebug/php安装pear/phpunit详解步骤(图)
Dec 22 PHP
php实现可以设置中奖概率的抽奖程序代码分享
Jan 19 PHP
PHP获取mysql数据表的字段名称和详细信息的方法
Sep 27 PHP
php去除头尾空格的2种方法
Mar 16 PHP
PHP易混淆知识整理笔记
Sep 24 PHP
PHP 表单提交及处理表单数据详解及实例
Dec 27 PHP
Laravel 5.4因特殊字段太长导致migrations报错的解决
Oct 22 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中的CMS的涵义
2007/03/11 PHP
dedecms模版制作使用方法
2007/04/03 PHP
PHP实时显示输出
2008/10/02 PHP
php 404错误页面实现代码
2009/06/22 PHP
php define的第二个参数使用方法
2013/11/04 PHP
PHP常用函数总结(180多个)
2016/12/25 PHP
php使用redis的有序集合zset实现延迟队列应用示例
2020/02/20 PHP
JavaScript 5 新增 Array 方法实现介绍
2012/02/06 Javascript
JS数学函数Exp使用说明
2012/08/09 Javascript
JavaScript建立一个语法高亮输入框实现思路
2013/02/26 Javascript
javascript+ajax实现产品页面加载信息
2015/07/09 Javascript
jquery中cookie用法实例详解(获取,存储,删除等)
2016/01/04 Javascript
javascript的几种继承方法介绍
2016/03/22 Javascript
几种二级联动案例(jQuery\Array\Ajax php)
2016/08/13 Javascript
vue实现一个移动端屏蔽滑动的遮罩层实例
2017/06/08 Javascript
vue 的点击事件获取当前点击的元素方法
2018/09/15 Javascript
webpack之引入图片的实现及问题
2018/10/08 Javascript
微信小程序配置服务器提示验证token失败的解决方法
2019/04/03 Javascript
使用RxJS更优雅地进行定时请求详析
2019/06/02 Javascript
深入学习JavaScript 高阶函数
2019/06/11 Javascript
JS+canvas五子棋人机对战实现步骤详解
2020/06/04 Javascript
Windows系统下PhantomJS的安装和基本用法
2018/10/21 Python
Python 正则表达式爬虫使用案例解析
2019/09/23 Python
详解Python3定时器任务代码
2019/09/23 Python
Python进阶之迭代器与迭代器切片教程
2020/01/29 Python
python的列表List求均值和中位数实例
2020/03/03 Python
详解CSS3原生支持div铺满浏览器的方法
2018/08/30 HTML / CSS
HTML5中的Web Notification桌面右下角通知功能的实现
2018/04/19 HTML / CSS
Roxy俄罗斯官方网站:冲浪和滑雪板的一切
2020/06/20 全球购物
PHP中如何使用Cookie
2015/10/28 面试题
车辆维修工自我评价怎么写
2013/09/20 职场文书
报社实习生自荐信
2014/01/24 职场文书
2014年纪检部工作总结
2014/11/12 职场文书
中秋节主题班会
2015/08/14 职场文书
nginx请求限制配置方法
2021/07/09 Servers
Android RecyclerView实现九宫格效果
2022/06/28 Java/Android