>  기사  >  백엔드 개발  >  php递归实现层级树状展现数据,大家给点意见,看看我写的怎么样

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

WBOY
WBOY원래의
2016-08-04 09:22:041031검색

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

<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으로 문의하세요.