无限级分类之查找子孙树

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无限级分类之查找子孙树相关的知识,希望对你有一定的参考价值。

 1 <?php 
 2 header("Content-Type:text/html;charset=utf-8");
 3 $cate=array(
 4     array(‘id‘=>1,‘name‘=>‘html‘,‘parent‘=>0),
 5     array(‘id‘=>2,‘name‘=>‘javascript‘,‘parent‘=>0),
 6     array(‘id‘=>3,‘name‘=>‘div+css‘,‘parent‘=>0),
 7     array(‘id‘=>4,‘name‘=>‘linux‘,‘parent‘=>0),
 8     array(‘id‘=>5,‘name‘=>‘mysql‘,‘parent‘=>0),
 9     array(‘id‘=>6,‘name‘=>‘其他‘,‘parent‘=>0),
10     array(‘id‘=>7,‘name‘=>‘php‘,‘parent‘=>0),
11     array(‘id‘=>8,‘name‘=>‘字符串‘,‘parent‘=>7),
12     array(‘id‘=>9,‘name‘=>‘数组‘,‘parent‘=>7),
13     array(‘id‘=>10,‘name‘=>‘对象‘,‘parent‘=>7),
14     array(‘id‘=>11,‘name‘=>‘jquery‘,‘parent‘=>2),
15     array(‘id‘=>12,‘name‘=>‘ajax‘,‘parent‘=>2),
16     array(‘id‘=>13,‘name‘=>‘存储引擎‘,‘parent‘=>5),
17     array(‘id‘=>14,‘name‘=>‘事务‘,‘parent‘=>5),
18     array(‘id‘=>15,‘name‘=>‘存储过程‘,‘parent‘=>5),
19     array(‘id‘=>16,‘name‘=>‘视图‘,‘parent‘=>5),
20     array(‘id‘=>17,‘name‘=>‘基本命令‘,‘parent‘=>4),
21     array(‘id‘=>18,‘name‘=>‘网络配置‘,‘parent‘=>4)
22 );
23 
24 /*
25  * 利用静态变量来做
26  * static $con
27  */
28 
29 function findson($arr,$id=0,$lev=1){
30     static $con=array();
31     foreach ($arr as $v){
32         if ($v[‘parent‘]==$id){
33             $v[‘lev‘]=$lev;
34             $con[]=$v;
35             findson($arr,$v[‘id‘],$lev+1);
36         }
37     }
38     return $con;
39 }
40 
41 $arr=findson($cate,0,1);
42 
43 
44 foreach ($arr as $v){
45     if($v[‘lev‘]>1){
46         echo str_repeat("&nbsp;&nbsp;&nbsp;&nbsp;", $v[‘lev‘]).$v[‘name‘]."<br/>";
47     }else{
48         echo $v[‘name‘]."<br/>";
49     }
50    
51 }
52 
53 
54 /*
55  * 不用静态变量
56  */
57 
58 function findson($arr,$id=0,$lev=1){
59     $con=array();
60     foreach ($arr as $v){
61         if ($v[‘parent‘]==$id){
62             $v[‘lev‘]=$lev;
63             $con[]=$v;
64             $con=array_merge($con,findson($arr,$v[‘id‘],$lev+1));
65         }
66     }
67     return $con;
68 }
69 
70 $arr=findson($cate,0,1);
71 
72 
73 foreach ($arr as $v){
74     if($v[‘lev‘]>1){
75         echo str_repeat("&nbsp;&nbsp;&nbsp;&nbsp;", $v[‘lev‘]).$v[‘name‘]."<br/>";
76     }else{
77         echo $v[‘name‘]."<br/>";
78     }
79      
80 }
97 ?>

 

以上是关于无限级分类之查找子孙树的主要内容,如果未能解决你的问题,请参考以下文章

无限极分类php实现—查子孙树家谱树

无限极分类查找所有子孙节点的改进算法

无限极分类

无限级分类实现思路 (组织树的分级管理)

ASP 无限级分类

无限极分类中递归查找一个树结构