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 相关文章推荐
3.从实例开始
Oct 09 PHP
mysql5详细安装教程
Jan 15 PHP
PHP Ajax中文乱码问题解决方法
Feb 27 PHP
Function eregi is deprecated (解决方法)
Jun 21 PHP
PHP使用json_encode函数时不转义中文的解决方法
Nov 12 PHP
PHP连接Nginx服务器并解析Nginx日志的方法
Aug 16 PHP
PHP安装threads多线程扩展基础教程
Nov 17 PHP
详解WordPress中给链接添加查询字符串的方法
Dec 18 PHP
Yii框架创建cronjob定时任务的方法分析
May 23 PHP
PHP有序表查找之二分查找(折半查找)算法示例
Feb 09 PHP
PHP调用微博接口实现微博登录的方法示例
Sep 22 PHP
PHP实现唤起微信支付功能
Feb 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常用函数 推荐收藏保存
2010/02/21 PHP
PHP实现的简单留言板功能示例【基于thinkPHP框架】
2018/12/07 PHP
Yii中特殊行为ActionFilter的使用方法示例
2020/10/18 PHP
juqery 学习之六 CSS--css、位置、宽高
2011/02/11 Javascript
JQueryEasyUI datagrid框架的基本使用
2013/04/08 Javascript
jQuery怎么解析Json字符串(Json格式/Json对象)
2013/08/09 Javascript
js向上无缝滚动,网站公告效果 具体代码
2013/11/18 Javascript
javascript实现分栏显示小技巧附图
2014/10/13 Javascript
JS中artdialog弹出框控件之提交表单思路详解
2016/04/18 Javascript
jQuery原理系列-css选择器的简单实现
2016/06/07 Javascript
原生javascript实现图片放大镜效果
2017/01/18 Javascript
vue使用laydate时间插件的方法
2018/11/14 Javascript
Python 转义字符详细介绍
2017/03/21 Python
在centos7中分布式部署pyspider
2017/05/03 Python
Python轻量级ORM框架Peewee访问sqlite数据库的方法详解
2017/07/20 Python
解决Pycharm无法import自己安装的第三方module问题
2018/05/18 Python
Python动态生成多维数组的方法示例
2018/08/09 Python
对Pandas MultiIndex(多重索引)详解
2018/11/16 Python
对python函数签名的方法详解
2019/01/22 Python
Scrapy框架爬取Boss直聘网Python职位信息的源码
2019/02/22 Python
Python下载网易云歌单歌曲的示例代码
2020/08/12 Python
Python使用pycharm导入pymysql教程
2020/09/16 Python
泰国演唱会订票网站:StubHub泰国
2018/02/26 全球购物
台湾SHOPRO购物行家:亚洲首创影视.3C.家电.优质购物平台
2018/05/07 全球购物
英国日常交易网站:Wowcher
2018/09/04 全球购物
哥德堡通行证:Gothenburg Pass
2019/12/09 全球购物
公司培训心得体会
2014/01/03 职场文书
班主任师德师风自我剖析材料
2014/10/02 职场文书
12.4法制宣传日标语
2014/10/08 职场文书
软弱涣散基层党组织整改方案
2014/10/25 职场文书
少先队中队工作总结2015
2015/07/23 职场文书
幼儿园托班开学寄语(2016春季)
2015/12/03 职场文书
简历上的自我评价,该怎么写呢?
2019/06/13 职场文书
HAM-2000摩机图
2021/04/22 无线电
elasticSearch-api的具体操作步骤讲解
2021/06/28 Java/Android
nginx lua 操作 mysql
2022/05/15 Servers