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分页示例代码
Mar 19 PHP
收藏的PHP常用函数 推荐收藏保存
Feb 21 PHP
供参考的 php 学习提高路线分享
Oct 23 PHP
在wamp集成环境下升级php版本(实现方法)
Jul 01 PHP
CodeIgniter输出中文乱码的两种解决办法
Jun 12 PHP
ThinkPHP基于PHPExcel导入Excel文件的方法
Oct 15 PHP
PHP常用设计模式之委托设计模式
Feb 13 PHP
Yii框架结合sphinx,Ajax实现搜索分页功能示例
Oct 18 PHP
php-msf源码详解
Dec 25 PHP
PHP后期静态绑定之self::限制实例分析
Dec 21 PHP
关于Yii中模型场景的一些简单介绍
Sep 22 PHP
PHP使用POP3读取邮箱接收邮件的示例代码
Jul 08 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
利用浏览器的Javascript控制台调试PHP程序
2014/01/08 PHP
php修改指定文件后缀的方法
2014/09/11 PHP
php魔术变量用法实例详解
2014/11/13 PHP
php批量添加数据与批量更新数据的实现方法
2014/12/16 PHP
PHP经典面试题之设计模式(经常遇到)
2015/10/15 PHP
Yii框架小部件(Widgets)用法实例详解
2020/05/15 PHP
浅谈php常用的7大框架的优缺点
2020/07/20 PHP
nodejs 后缀名判断限制代码
2011/03/31 NodeJs
js形成页面的一种遮罩效果实例代码
2014/01/04 Javascript
JQuery的Ajax请求实现局部刷新的简单实例
2014/02/11 Javascript
JavaScript中按位“异或”运算符使用介绍
2014/03/14 Javascript
Javascript递归打印Document层次关系实例分析
2015/05/15 Javascript
jquery京东商城双11焦点图多图广告特效代码分享
2015/09/06 Javascript
Javascript中神奇的this
2016/01/20 Javascript
javascript jquery对form元素的常见操作详解
2016/06/12 Javascript
简单好用的nodejs 爬虫框架分享
2017/03/26 NodeJs
Vue项目webpack打包部署到服务器的实例详解
2017/07/17 Javascript
JS正则表达式完美实现身份证校验功能
2017/10/18 Javascript
AngularJS实现图片上传和预览功能的方法分析
2017/11/08 Javascript
Python统计文件中去重后uuid个数的方法
2015/07/30 Python
python 回调函数和回调方法的实现分析
2016/03/23 Python
python 3.6 +pyMysql 操作mysql数据库(实例讲解)
2017/12/20 Python
Python实现模拟浏览器请求及会话保持操作示例
2018/07/30 Python
Python使用random.shuffle()打乱列表顺序的方法
2018/11/08 Python
对python实现合并两个排序链表的方法详解
2019/01/23 Python
Django框架用户注销功能实现方法分析
2019/05/28 Python
使用Keras 实现查看model weights .h5 文件的内容
2020/06/09 Python
环境工程专业个人求职信
2013/12/05 职场文书
亲属关系公证书
2014/04/08 职场文书
工作检讨书怎么写
2014/10/10 职场文书
2014年辅导员工作总结
2014/11/18 职场文书
2015年员工试用期工作总结
2014/12/12 职场文书
八年级英语教学计划
2015/01/23 职场文书
企业内部管理控制:银行存款控制制度范本
2020/01/10 职场文书
CSS变量实现主题切换的方法
2021/06/23 HTML / CSS
【海涛DOTA】D-cup邀请赛NV.cn vs DT.Love
2022/04/01 DOTA