PHP implementiert rekursiv die hierarchische Baumdarstellung von Daten. Bitte teilen Sie mir Ihre Meinung mit und sehen Sie, wie mein Text verläuft.

WBOY
Freigeben: 2016-08-04 09:22:04
Original
1074 Leute haben es durchsucht

Erstellen Sie zunächst eine Datentabelle und fügen Sie einige Daten hinzu

<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>
Nach dem Login kopieren
Nach dem Login kopieren
<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<$depth:1)) {  
                    $leaf['children'] = arr2tree($tree,$depth,$leaf['categoryId'],$level+1);
                    $level=1;
                    break;  
                }  
            }  
            $return[] = $leaf;  
        }  
    }
    return $return;  
}  

$tree = arr2tree($category,0);
$tree1 = arr2tree($category,2);
echo "<pre class="brush:php;toolbar:false">";
print_r($tree);
print_r($tree1);</code>
Nach dem Login kopieren
Nach dem Login kopieren

Antwortinhalt:

Erstellen Sie zunächst eine Datentabelle und fügen Sie einige Daten hinzu

<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>
Nach dem Login kopieren
Nach dem Login kopieren
<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<$depth:1)) {  
                    $leaf['children'] = arr2tree($tree,$depth,$leaf['categoryId'],$level+1);
                    $level=1;
                    break;  
                }  
            }  
            $return[] = $leaf;  
        }  
    }
    return $return;  
}  

$tree = arr2tree($category,0);
$tree1 = arr2tree($category,2);
echo "<pre class="brush:php;toolbar:false">";
print_r($tree);
print_r($tree1);</code>
Nach dem Login kopieren
Nach dem Login kopieren

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

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage