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 相关文章推荐
一次编写,随处运行
Oct 09 PHP
杏林同学录(五)
Oct 09 PHP
PHP 5.0对象模型深度探索之属性和方法
Mar 27 PHP
php Xdebug 调试扩展的安装与使用.
Mar 13 PHP
php Hex RGB颜色值互换的使用
May 10 PHP
PHP使用正则表达式清除超链接文本
Nov 12 PHP
PHP解析html类库simple_html_dom的转码bug
May 22 PHP
php获取CSS文件中图片地址并下载到本地的方法
Dec 02 PHP
PHP内存缓存Memcached类实例
Dec 08 PHP
php取得字符串首字母的方法
Mar 25 PHP
PHP编辑器PhpStrom运行缓慢问题
Feb 21 PHP
Ajax+Jpgraph实现的动态折线图功能示例
Feb 11 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数组函数序列之array_push() 数组尾部添加一个或多个元素(入栈),返回新长度。
2011/11/07 PHP
php批量上传的实现代码
2013/06/09 PHP
codeigniter集成ucenter1.6双向通信的解决办法
2014/06/12 PHP
php使用mysqli向数据库添加数据的方法
2015/03/20 PHP
PHP实现的蚂蚁爬杆路径算法代码
2015/12/03 PHP
php变量与数组相互转换的方法(extract与compact)
2016/12/02 PHP
php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例
2019/05/09 PHP
Laravel框架数据库迁移操作实例详解
2020/04/06 PHP
javascript 清除输入框中的数据
2009/04/13 Javascript
JSON 客户端和服务器端的格式转换
2009/08/27 Javascript
网页中表单按回车就自动提交的问题的解决方案
2014/11/03 Javascript
javascript的BOM汇总
2015/07/16 Javascript
js动态生成form 并用ajax方式提交的实现方法
2016/09/09 Javascript
JavaScript Drum Kit 指南(纯 JS 模拟敲鼓效果)
2017/07/23 Javascript
除Console.log()外更多的Javascript调试命令
2018/01/24 Javascript
vue + typescript + video.js实现 流媒体播放 视频监控功能
2019/07/07 Javascript
js图片无缝滚动插件使用详解
2020/05/26 Javascript
vue实现井字棋游戏
2020/09/29 Javascript
[53:10]Secret vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python基于mysql实现的简单队列以及跨进程锁实例详解
2014/07/07 Python
python静态方法实例
2015/01/14 Python
python使用电子邮件模块smtplib的方法
2016/08/28 Python
win8.1安装Python 2.7版环境图文详解
2019/07/01 Python
Python的互斥锁与信号量详解
2019/09/12 Python
python 创建一维的0向量实例
2019/12/02 Python
如何使用python3获取当前路径及os.path.dirname的使用
2019/12/13 Python
如何实现在jupyter notebook中播放视频(不停地展示图片)
2020/04/23 Python
浅析Python模块之间的相互引用问题
2021/02/26 Python
利用html5 file api读取本地文件示例(如图片、PDF等)
2018/03/07 HTML / CSS
雅诗兰黛旗下走天然植物路线的彩妆品牌:Prescriptives
2016/08/14 全球购物
土木工程建筑专业毕业生求职信
2013/10/21 职场文书
计算机求职自荐信范文
2014/04/19 职场文书
资料员岗位职责范本
2015/04/13 职场文书
导游词之镇江西津古渡
2019/11/06 职场文书
Android开发手册TextInputLayout样式使用示例
2022/06/10 Java/Android
mysql拆分字符串作为查询条件的示例代码
2022/07/07 MySQL