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的递归,也来总结总结! PHP代码: function _getTreeList_custom1($data,$parent_id,$depth) { $retur ...
 - Java-J2SE学习笔记-树状展现文件结构
		
1.利用java.io相关类树状展现文件结构 2.判定给定路径是否为dir,是则递归,每一递归一层缩进一次 3.代码 package Test; import java.io.File; public ...
 - 菜鸟笔记:node.js+mysql中将JSON数据构建为树(递归制作树状菜单数据接口)
		
初学Web端开发,今天是第一次将所学做随笔记录,肯定存在多处欠妥,望大家海涵:若有不足,望大家批评指正. 进实验室后分配到的第一个项目,需要制作一个不确定层级树形菜单的数据接口,对于从来没实战编过程的 ...
 - vue 树状图数据的循环 递归循环
		
在main.js中注册一个子组件 在父组件中引用 树状图的数据格式 绑定一个数据传入子组件,子组件props接收数据 子组件中循环调用组件,就实现了递归循环
 - 基于ExtJs6前台,SpringMVC-Spring-Mybatis,resteasy,mysql无限极表设计,实现树状展示数据(treepanel)
		
先从后台讲起 1.表的设计 parent_id就是另外一条记录的id,无限极表设计可以参考 http://m.blog.csdn.net/Rookie_Or_Veteran/article/deta ...
 - 如何构造树状 JSON 数据   JSON-Tree
		
十年河东,十年河西,莫欺骚年穷...打错一个字哈.~_~ 接着上一篇博客,上一篇博客是=使用数据库结合LINQ构造的,为了方便理解,本篇采用泛型分组进行构造. 有兴趣的小虎斑可以参考上一篇博客:如何构 ...
 - Java递归获取部门树 返回jstree数据
		
@GetMapping("/getDept")@ResponseBodypublic Tree<DeptDO> getDept(String deptId){ Tree ...
 - 树状结构Java模型、层级关系Java模型、上下级关系Java模型与html页面展示
		
树状结构Java模型.层级关系Java模型.上下级关系Java模型与html页面展示 一.业务原型:公司的组织结构.传销关系网 二.数据库模型 很简单,创建 id 与 pid 关系即可.(pid:pa ...
 - D3树状图异步按需加载数据
		
D3.js这个绘图工具,功能强大不必多说,完全一个Data Driven Document的绘图工具,用户可以按照自己的数据以及希望实现的图形,随心所欲的绘图. 图形绘制,D3默认采用的是异步加载,但 ...
 
随机推荐
- 关于svn的安装问题
			
直接把安装包放在 MyEclipse的安装目录下 如果 报错 那么就重装MyEclipse 半个小时左右就OK了不然调错太浪费时间了
 - 【java链表 】java 头插法建单链表
			
好久前练习用的,现在看难度不大. package project; class Node { private int id; //私有就是只能本类对象及方法访问. private String nam ...
 - android手势感应预研
			
1. 产品介绍 该产品可以通过传感器来侦测用户的手势变化进而执行一些操作.比如说信息预览(如短信息预览.日历预览等等),此外,还可以通过指向某一个时间点来预览视频内容.预览音乐播放器(下一首歌 ...
 - poj 3628 Bookshelf 2 基本01背包
			
题目大意:FJ有n头奶牛,和一个高为h的架子,给出每头奶牛高度,求使奶牛叠加起来超过架子的最低高度是多少. 题目思路:求出奶牛叠加能达到的所有高度,并用dp[]保存,最后进行遍历,找出与h差最小的dp ...
 - c# 错误 两个输出文件名解析为同一个输出路径
			
检查同项目的其他文件夹下面已有其他同名窗体,影响设计器
 - html 自定义标签的作用
			
比如早期的时候,如果浏览器不支持 nav 这个标签的话, style标签中的样式 nav {color: yellow}会不起作用,字体不会变黄. 怎么处理兼容性呢? 用 javascript. 加上 ...
 - PHP 领域逻辑与数据库映射
			
http://blog.csdn.net/hguisu/article/details/7569968
 - angularJS 系列(二)——理解指令 understanding directives
			
参考:https://github.com/angular/angular.js/wiki/Understanding-Directives Injecting, Compiling, and Lin ...
 - Python核心编程第二版(中文).pdf 目录整理
			
python核心编程目录 Chapter1:欢迎来到python世界!-页码:7 1.1什么是python 1.2起源 :罗萨姆1989底创建python 1.3特点 1.3.1高级 1.3.2面向 ...
 - 0115percona-toolkit安装教程
			
一.percona-toolkit简介percona-toolkit是一组高级命令行工具的集合,用来执行各种通过手工执行非常复杂和麻烦的mysql和系统任务,这些任务包括: 检查master和slav ...