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缩略图生成程式(需要GD库支持)
Mar 06 PHP
php和javascript之间变量的传递实现代码
Dec 19 PHP
PHP在不同页面间传递Json数据示例代码
Jun 08 PHP
如何给phpcms v9增加类似于phpcms 2008中的关键词表
Jul 01 PHP
php基于Snoopy解析网页html的方法
Jul 09 PHP
php使用curl详细解析及问题汇总
Aug 11 PHP
PHP实现上一篇下一篇的方法实例总结
Sep 22 PHP
Yii输入正确验证码却验证失败的解决方法
Jun 06 PHP
php生出随机字符串
Jul 06 PHP
Laravel模型事件的实现原理详解
Mar 14 PHP
laravel实现上传图片并在页面显示的例子
Oct 14 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
Feb 15 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代码收集表单内容并写入文件的代码
2012/01/29 PHP
php preg_filter执行一个正则表达式搜索和替换
2012/02/27 PHP
PHP采集类Snoopy抓取图片实例
2014/06/19 PHP
PHP中isset与array_key_exists的区别实例分析
2015/06/02 PHP
PHP实现简单实用的验证码类
2015/07/29 PHP
javascript 同时在IE和FireFox获取KeyCode的代码
2010/02/07 Javascript
Jquery chosen动态设置值实例介绍
2013/08/08 Javascript
jquery 新建的元素事件绑定问题解决方案
2014/06/12 Javascript
jsMind通过鼠标拖拽的方式调整节点位置
2015/04/13 Javascript
基于javascript代码实现通过点击图片显示原图片
2015/11/29 Javascript
jQuery Easyui Tabs扩展根据自定义属性打开页签
2016/08/15 Javascript
js给table赋值的实例代码
2016/10/13 Javascript
微信开发 使用picker封装省市区三级联动模板
2016/10/28 Javascript
微信小程序promsie.all和promise顺序执行
2017/10/27 Javascript
React中Ref 的使用方法详解
2020/04/28 Javascript
vue动态加载SVG文件并修改节点数据的操作代码
2020/08/17 Javascript
Python使用gensim计算文档相似性
2016/04/10 Python
django基础之数据库操作方法(详解)
2017/05/24 Python
python如何使用正则表达式的前向、后向搜索及前向搜索否定模式详解
2017/11/08 Python
浅谈Pandas:Series和DataFrame间的算术元素
2018/12/22 Python
pyqt5 comboBox获得下标、文本和事件选中函数的方法
2019/06/14 Python
twilio python自动拨打电话,播放自定义mp3音频的方法
2019/08/08 Python
Python常用数字处理基本操作汇总
2020/09/10 Python
Python 中的函数装饰器和闭包详解
2021/02/06 Python
使用CSS实现阅读进度条
2017/02/27 HTML / CSS
网站域名和主机:Domain.com
2019/04/01 全球购物
REISS美国官网:伦敦最受欢迎的时尚品牌
2019/08/16 全球购物
成人继续教育实施方案
2014/03/01 职场文书
保密工作承诺书
2014/08/29 职场文书
学生会干部自我鉴定2014
2014/09/18 职场文书
党员干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
清明节网上祭英烈寄语2015
2015/03/04 职场文书
联欢会开场白
2015/06/01 职场文书
初中语文教师研修日志
2015/11/13 职场文书
导游词之江西赣州
2019/10/15 职场文书
Python+Appium新手教程
2021/04/17 Python