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 相关文章推荐
利用文件属性结合Session实现在线人数统计
Oct 09 PHP
操作Oracle的php类
Oct 09 PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装(win+linux)
May 05 PHP
PHP面向对象的进阶学习(抽像类、接口、final、类常量)
May 07 PHP
解析PHP处理换行符的问题 \r\n
Jun 13 PHP
PHP不用递归遍历目录下所有文件的代码
Jul 04 PHP
php页面,mysql数据库转utf-8乱码,utf-8编码问题总结
Aug 27 PHP
php、java、android、ios通用的3des方法(推荐)
Sep 09 PHP
PHP实现蛇形矩阵,回环矩阵及数字螺旋矩阵的方法分析
May 29 PHP
Laravel框架Auth用户认证操作实例分析
Sep 29 PHP
php获取微信openid方法总结
Oct 10 PHP
laravel 解决路由除了根目录其他都404的问题
Oct 18 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实现通过stomp协议连接ActiveMQ操作示例
2020/02/23 PHP
JavaScript与C# Windows应用程序交互方法
2007/06/29 Javascript
js 图片缩放(按比例)控制代码
2009/05/27 Javascript
加速IE的Javascript document输出的方法
2010/12/02 Javascript
window.requestAnimationFrame是什么意思,怎么用
2013/01/13 Javascript
js模拟select下拉菜单控件的代码
2013/05/08 Javascript
捕获键盘事件(且兼容各浏览器)
2013/07/03 Javascript
Angularjs基础知识及示例汇总
2015/01/22 Javascript
javascript表单验证大全
2015/08/12 Javascript
jQuery中cookie插件用法实例分析
2015/12/04 Javascript
zTree插件下拉树使用入门教程
2016/04/11 Javascript
jquery mobile界面数据刷新的实现方法
2016/05/28 Javascript
JavaScript 数组的深度复制解析
2016/11/02 Javascript
jQuery插件扩展实例【添加回调函数】
2016/11/26 Javascript
微信小程序 简单DEMO布局,逻辑,样式的练习
2016/11/30 Javascript
js实现可输入可选择的select下拉框
2016/12/21 Javascript
浅谈jQuery框架Ajax常用选项
2017/07/08 jQuery
Angular2 组件间通过@Input @Output通讯示例
2017/08/24 Javascript
vue按需引入element Transfer 穿梭框
2017/09/30 Javascript
vue.js购物车添加商品组件的方法
2019/09/17 Javascript
微信小程序实现列表的横向滑动方式
2020/07/15 Javascript
[02:40]DOTA2殁境神蚀者 英雄基础教程
2013/11/26 DOTA
使用Python抓取模板之家的CSS模板
2015/03/16 Python
matplotlib绘制动画代码示例
2018/01/02 Python
详解用python写一个抽奖程序
2019/05/10 Python
django中的数据库迁移的实现
2020/03/16 Python
Python实现自动打开电脑应用的示例代码
2020/04/17 Python
销售主管岗位职责
2014/02/08 职场文书
考察现实表现材料
2014/05/19 职场文书
开发房地产协议书
2014/09/14 职场文书
法定授权委托证明书
2014/09/27 职场文书
大学生违纪检讨书300字
2014/10/25 职场文书
大学生学习十八届五中全会精神心得体会
2016/01/05 职场文书
中国梦党课学习心得体会
2016/01/05 职场文书
Springboot/Springcloud项目集成redis进行存取的过程解析
2021/12/04 Redis
高并发下Redis如何保持数据一致性(避免读后写)
2022/03/18 Redis