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 相关文章推荐
AJAX for PHP简单表数据查询实例
Jan 02 PHP
php判断字符串在另一个字符串位置的方法
Feb 27 PHP
ThinkPHP控制器里javascript代码不能执行的解决方法
Nov 22 PHP
PHP实现抓取Google IP并自动修改hosts文件
Feb 12 PHP
PHP中is_dir()函数使用指南
May 08 PHP
php中session定期自动清理的方法
Nov 12 PHP
PHP 读取文本文件内容并分页显示
Jan 02 PHP
PHP简单判断iPhone、iPad、Android及PC设备的方法
Oct 11 PHP
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
Dec 14 PHP
Laravel项目中timeAgo字段语言转换的改善方法示例
Sep 16 PHP
laravel 多图上传及图片的存储例子
Oct 14 PHP
Laravel + Elasticsearch 实现中文搜索的方法
Feb 02 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有效防止图片盗用、盗链的两种方法
2016/11/01 PHP
Laravel推荐使用的十个辅助函数
2019/05/10 PHP
网页编辑器ckeditor和ckfinder配置步骤分享
2012/05/24 Javascript
js中escape对应的C#解码函数 UrlDecode
2012/12/16 Javascript
用js调用迅雷下载代码的二种方法
2013/04/15 Javascript
纯JavaScript 实现flappy bird小游戏实例代码
2016/09/27 Javascript
详解js中常规日期格式处理、月历渲染和倒计时函数
2016/12/28 Javascript
Angularjs中使用layDate日期控件示例
2017/01/11 Javascript
Javascript中document.referrer隐藏来源的方法
2017/01/16 Javascript
Angular directive递归实现目录树结构代码实例
2017/05/05 Javascript
vue  自定义组件实现通讯录功能
2018/09/30 Javascript
vue form check 表单验证的实现代码
2018/12/09 Javascript
vue中利用iscroll.js解决pc端滚动问题
2020/02/15 Javascript
解决Vue大括号字符换行踩的坑
2020/11/09 Javascript
[06:15]2016国际邀请赛中国区预选赛单车采访:我顶WINGS
2016/06/27 DOTA
python实现在控制台输入密码不显示的方法
2015/07/02 Python
微信 用脚本查看是否被微信好友删除
2016/10/28 Python
python3.6使用urllib完成下载的实例
2018/12/19 Python
使用Python脚本zabbix自定义key监控oracle连接状态
2019/08/28 Python
Django之使用celery和NGINX生成静态页面实现性能优化
2019/10/08 Python
python3正则模块re的使用方法详解
2020/02/11 Python
Pygame的程序开始示例代码
2020/05/07 Python
python golang中grpc 使用示例代码详解
2020/06/03 Python
PyCharm vs VSCode,作为python开发者,你更倾向哪种IDE呢?
2020/08/17 Python
Python中qutip用法示例详解
2020/10/02 Python
日本最新流行服饰网购:Nissen
2016/07/24 全球购物
领导班子“四风问题”“整改方案
2014/10/02 职场文书
2014年班级工作总结
2014/11/14 职场文书
家属答谢词
2015/01/05 职场文书
社区工作者个人总结
2015/02/28 职场文书
2015年见习期个人工作总结
2015/05/28 职场文书
红高粱观后感
2015/06/10 职场文书
2016十一国庆节感言
2015/12/09 职场文书
《陶罐和铁罐》教学反思
2016/03/03 职场文书
pytorch 实现变分自动编码器的操作
2021/05/24 Python
Python实现数据的序列化操作详解
2022/07/07 Python