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 生成饼图 三维饼图
Sep 28 PHP
php 获取本机外网/公网IP的代码
May 09 PHP
php短域名转换为实际域名函数
Jan 17 PHP
浅谈PHP与C#的值类型指向区别的详解
May 21 PHP
PHP数据类型的总结分析
Jun 13 PHP
解析smarty 截取字符串函数 truncate的用法介绍
Jun 20 PHP
解析PHP提交后跳转
Jun 23 PHP
php从csv文件读取数据并输出到网页的方法
Mar 14 PHP
twig模板常用语句实例小结
Feb 04 PHP
Fleaphp常见函数功能与用法示例
Nov 15 PHP
PHP 文件上传后端处理实用技巧方法
Jan 06 PHP
PHP反射机制原理与用法详解
Feb 15 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
百事可乐也出咖啡了 双倍咖啡因双倍快乐
2021/03/03 咖啡文化
推荐文章系统(一)
2006/10/09 PHP
php学习之变量的使用
2011/05/29 PHP
PHP面向对象学习笔记之二 生成对象的设计模式
2012/10/06 PHP
PHP处理excel cvs表格的方法实例介绍
2013/05/13 PHP
Thinkphp结合ajaxFileUpload实现异步图片传输示例
2017/03/13 PHP
jquery仿京东导航/仿淘宝商城左侧分类导航下拉菜单效果
2013/04/24 Javascript
使用JavaScript链式编程实现模拟Jquery函数
2014/12/21 Javascript
理解javascript闭包
2015/12/15 Javascript
使用NodeJs 开发微信公众号(三)微信事件交互实例
2016/03/02 NodeJs
js实现精确到秒的日期选择器完整实例
2016/04/30 Javascript
使用jQuery制作遮罩层弹出效果的极简实例分享
2016/05/12 Javascript
JavaScript中的boolean布尔值使用学习及相关技巧讲解
2016/05/26 Javascript
js 弹出对话框(遮罩)透明,可拖动的简单实例
2016/07/11 Javascript
深入浅析JS是按值传递还是按引用传递(推荐)
2016/09/18 Javascript
JS实现图片高斯模糊切换效果的焦点图实例
2017/01/21 Javascript
使用vue.js2.0 + ElementUI开发后台管理系统详细教程(二)
2017/01/21 Javascript
vue loadmore 组件滑动加载更多源码解析
2017/07/19 Javascript
详解Vue微信公众号开发踩坑全记录
2017/08/21 Javascript
快速理解 JavaScript 中的 LHS 和 RHS 查询的用法
2017/08/24 Javascript
旺旺在线客服代码 旺旺客服代码生成器
2018/01/09 Javascript
微信小程序websocket实现聊天功能
2020/03/30 Javascript
[01:58]2018DOTA2亚洲邀请赛趣味视频——交流
2018/04/03 DOTA
Python获取DLL和EXE文件版本号的方法
2015/03/10 Python
浅析Python中的join()方法的使用
2015/05/19 Python
详解Django中的过滤器
2015/07/16 Python
对pandas数据判断是否为NaN值的方法详解
2018/11/06 Python
python3下载抖音视频的完整代码
2019/06/05 Python
Python3如何在服务器打印资产信息
2020/08/27 Python
详解Canvas事件绑定
2018/06/27 HTML / CSS
HTML5 常用语法一览(列举不支持的属性)
2010/01/26 HTML / CSS
2014年消防工作实施方案
2014/02/20 职场文书
中学学校门卫岗位职责
2014/08/15 职场文书
高考升学宴答谢词
2015/01/20 职场文书
违纪检讨书范文
2015/01/27 职场文书
Python echarts实现数据可视化实例详解
2022/03/03 Python