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

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

WBOY
WBOYOriginal
2016-08-04 09:22:041030Durchsuche

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

<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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn