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中数组的三种排序方法分享
May 07 PHP
IIS6.0中配置php服务全过程解析
Aug 07 PHP
Laravel框架表单验证详解
Sep 04 PHP
PHP设置进度条的方法
Jul 08 PHP
Zend Framework教程之前端控制器Zend_Controller_Front用法详解
Mar 07 PHP
PHP采用超长(超大)数字运算防止数字以科学计数法显示的方法
Apr 01 PHP
php结合md5的加密解密算法实例
Sep 30 PHP
PHP使用Nginx实现反向代理
Sep 20 PHP
PHP实现Redis单据锁以及防止并发重复写入
Apr 10 PHP
关于PHP虚拟主机概念及如何选择稳定的PHP虚拟主机
Nov 20 PHP
PHP数字金额转换成中文大写显示
Jan 05 PHP
Centos7安装swoole扩展操作示例
Mar 26 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文件时顶部出现空白影响布局分析原因及解决办法
2013/01/11 PHP
PHP常见错误提示含义解释(实用!值得收藏)
2016/04/25 PHP
详解如何在云服务器上部署Laravel
2017/06/30 PHP
编写高性能的JavaScript 脚本的加载与执行
2010/04/19 Javascript
基于jquery的inputlimiter 实现字数限制功能
2010/05/30 Javascript
js实现滚动条滚动到页面底部继续加载
2015/12/19 Javascript
JavaScript通过filereader接口读取文件
2017/05/10 Javascript
详解微信小程序开发聊天室—实时聊天,支持图片预览
2019/05/20 Javascript
JavaScript实现像雪花一样的Hexaflake分形
2020/07/07 Javascript
Python实现的一个自动售饮料程序代码分享
2014/08/25 Python
Python 3中print函数的使用方法总结
2017/08/08 Python
有趣的python小程序分享
2017/12/05 Python
利用numpy和pandas处理csv文件中的时间方法
2018/04/19 Python
更改Python的pip install 默认安装依赖路径方法详解
2018/10/27 Python
Python Datetime模块和Calendar模块用法实例分析
2019/04/15 Python
python集合删除多种方法详解
2020/02/10 Python
浅析python 通⽤爬⾍和聚焦爬⾍
2020/09/28 Python
html5使用canvas画三角形
2014/12/15 HTML / CSS
canvas中普通动效与粒子动效的实现代码示例
2019/01/03 HTML / CSS
英国经典球衣网站:Classic Football Shirts
2017/05/20 全球购物
俄罗斯在线大型超市:ТутПросто
2021/01/08 全球购物
商业活动邀请函
2014/02/04 职场文书
学生手册评语
2014/05/05 职场文书
学习经验演讲稿
2014/05/10 职场文书
本科生求职信
2014/06/17 职场文书
网络技术专业求职信
2014/07/13 职场文书
后勤管理员岗位职责
2014/08/27 职场文书
2014年电话销售工作总结
2014/12/01 职场文书
2014年校务公开工作总结
2014/12/18 职场文书
Python 批量下载阴阳师网站壁纸
2021/05/19 Python
Mysql中 unique列插入重复值该怎么解决呢
2021/05/26 MySQL
HTML+CSS制作心跳特效的实现
2021/05/26 HTML / CSS
golang特有程序结构入门教程
2021/06/02 Python
python中的mysql数据库LIKE操作符详解
2021/07/01 MySQL
JavaScript展开运算符和剩余运算符的区别详解
2022/02/18 Javascript
python playwrigh框架入门安装使用
2022/07/23 Python