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新手上路(十)
Oct 09 PHP
PHP中的CMS的涵义
Mar 11 PHP
用PHP获取Google AJAX Search API 数据的代码
Mar 12 PHP
php操作JSON格式数据的实现代码
Dec 24 PHP
PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
Jan 16 PHP
php输出xml格式字符串(用的这个)
Jul 12 PHP
ThinkPHP之import方法实例详解
Jun 20 PHP
PHP生成图片验证码、点击切换实例
Jun 25 PHP
yii中widget的用法
Dec 03 PHP
浅析PHP文件下载原理
Dec 25 PHP
php微信公众平台开发(四)回复功能开发
Dec 06 PHP
php-fpm超时时间设置request_terminate_timeout资源问题分析
Sep 27 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+MYSQL的文章管理系统(二)
2006/10/09 PHP
php简单创建zip压缩文件的方法
2016/04/30 PHP
php使用CutyCapt实现网页截图保存的方法
2016/10/03 PHP
js中cookie的添加、取值、删除示例代码
2013/10/21 Javascript
在Firefox下js select标签点击无法弹出
2014/03/06 Javascript
node.js正则表达式获取网页中所有链接的代码实例
2014/06/03 Javascript
整理Javascript流程控制语句学习笔记
2015/11/29 Javascript
浅谈JavaScript 标准对象
2016/06/02 Javascript
JavaScript中的this使用详解
2016/07/27 Javascript
浅析JavaScript中作用域和作用域链
2016/12/06 Javascript
React-Native中禁用Navigator手势返回的示例代码
2017/09/09 Javascript
在vue中封装可复用的组件方法
2018/03/01 Javascript
仿ElementUI实现一个Form表单的实现代码
2019/04/23 Javascript
微信小程序select下拉框实现源码
2019/11/08 Javascript
vue中的使用token的方法示例
2020/03/10 Javascript
[01:03:03]VP vs Mineski 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
浅谈numpy库的常用基本操作方法
2018/01/09 Python
解决python中使用plot画图,图不显示的问题
2018/07/04 Python
Python设计模式之解释器模式原理与用法实例分析
2019/01/10 Python
Python 限制线程的最大数量的方法(Semaphore)
2019/02/22 Python
基于Tensorflow高阶读写教程
2020/02/10 Python
收藏!10个免费高清视频素材网站!【设计、视频剪辑必备】
2021/03/18 杂记
CSS3动画效果回调处理详解
2014/12/10 HTML / CSS
html5 Canvas画图教程(2)—画直线与设置线条的样式如颜色/端点/交汇点
2013/01/09 HTML / CSS
浅谈HTML5 服务器推送事件(Server-sent Events)
2017/08/01 HTML / CSS
护理职业应聘自荐书
2013/09/29 职场文书
新闻专业本科生的自我评价分享
2013/11/20 职场文书
人力资源部经理岗位职责规定
2014/02/23 职场文书
护士2014年终工作总结
2014/11/11 职场文书
2015年人事专员工作总结
2015/04/29 职场文书
2015年社区教育工作总结
2015/05/13 职场文书
读《解忧杂货店》有感:请相信一切都是最好的安排
2019/11/07 职场文书
解决python存数据库速度太慢的问题
2021/04/23 Python
python自动化之如何利用allure生成测试报告
2021/05/02 Python
python基础学习之生成器与文件系统知识总结
2021/05/25 Python
Python实现数据的序列化操作详解
2022/07/07 Python