首页  >  文章  >  后端开发  >  php递归实现层级树状展现数据,大家给点意见,看看我写的怎么样

php递归实现层级树状展现数据,大家给点意见,看看我写的怎么样

WBOY
WBOY原创
2016-08-04 09:22:041071浏览

首先创建数据表并添加些数据

<code class="sql">CREATE TABLE IF NOT EXISTS category ( 
categoryId smallint(5) unsigned NOT NULL AUTO_INCREMENT, 
parentId smallint(5) unsigned NOT NULL DEFAULT '0', 
categoryName varchar(50) NOT NULL, 
PRIMARY KEY (categoryId) 
) ;
INSERT INTO category (categoryId, parentId, categoryName) VALUES
(1, 0, 'php'), 
(2, 0, 'java'), 
(3, 0, 'c/c++'), 
(4, 1, 'php基础'), 
(5, 1, 'php开源资料'), 
(6, 1, 'php框架'), 
(7, 2, 'java Se'), 
(8, 2, 'java EE'), 
(9, 2, 'java Me'), 
(10, 3, 'c/c++基础编程'), 
(11, 3, 'c/c++系统开发'), 
(12, 3, 'c嵌入式编程'), 
(13, 3, 'c++应用开发'), 
(14, 13, 'c++桌面应用开发'), 
(15, 13, 'c++游戏开发');</code>
<code>/**
 *递归实现层级树状展现数据
 *$tree为二位数组,
 *$depth为树的最大深度,0表示不设置深度
 *$rootId表示父级分类的ID
 *$level记录层级树的层数
**/
function arr2tree($tree,$depth,$rootId = 0,$level=1) {  
    $return = array();  
    foreach($tree as $leaf) {  
        if($leaf['parentId'] == $rootId) {
            $leaf['level'] = $level;
            foreach($tree as $subleaf) {  
                if($subleaf['parentId'] == $leaf['categoryId'] && ($depth?$level";
print_r($tree);
print_r($tree1);</code>

回复内容:

首先创建数据表并添加些数据

<code class="sql">CREATE TABLE IF NOT EXISTS category ( 
categoryId smallint(5) unsigned NOT NULL AUTO_INCREMENT, 
parentId smallint(5) unsigned NOT NULL DEFAULT '0', 
categoryName varchar(50) NOT NULL, 
PRIMARY KEY (categoryId) 
) ;
INSERT INTO category (categoryId, parentId, categoryName) VALUES
(1, 0, 'php'), 
(2, 0, 'java'), 
(3, 0, 'c/c++'), 
(4, 1, 'php基础'), 
(5, 1, 'php开源资料'), 
(6, 1, 'php框架'), 
(7, 2, 'java Se'), 
(8, 2, 'java EE'), 
(9, 2, 'java Me'), 
(10, 3, 'c/c++基础编程'), 
(11, 3, 'c/c++系统开发'), 
(12, 3, 'c嵌入式编程'), 
(13, 3, 'c++应用开发'), 
(14, 13, 'c++桌面应用开发'), 
(15, 13, 'c++游戏开发');</code>
<code>/**
 *递归实现层级树状展现数据
 *$tree为二位数组,
 *$depth为树的最大深度,0表示不设置深度
 *$rootId表示父级分类的ID
 *$level记录层级树的层数
**/
function arr2tree($tree,$depth,$rootId = 0,$level=1) {  
    $return = array();  
    foreach($tree as $leaf) {  
        if($leaf['parentId'] == $rootId) {
            $leaf['level'] = $level;
            foreach($tree as $subleaf) {  
                if($subleaf['parentId'] == $leaf['categoryId'] && ($depth?$level";
print_r($tree);
print_r($tree1);</code>

http://stackoverflow.com/questions/4196157/create-array-tree-from-array-list

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn