无限极分类之查找子孙树

 1 <?php
 2
 3 header(‘content-type:text/html;charset=utf8‘);
 4 $area = array(
 5 array(‘id‘=>1,‘name‘=>‘安徽‘,‘parent‘=>0),
 6 array(‘id‘=>2,‘name‘=>‘海淀‘,‘parent‘=>7),
 7 array(‘id‘=>3,‘name‘=>‘濉溪县‘,‘parent‘=>5),
 8 array(‘id‘=>4,‘name‘=>‘昌平‘,‘parent‘=>7),
 9 array(‘id‘=>5,‘name‘=>‘淮北‘,‘parent‘=>1),
10 array(‘id‘=>6,‘name‘=>‘朝阳‘,‘parent‘=>7),
11 array(‘id‘=>7,‘name‘=>‘北京‘,‘parent‘=>0),
12 array(‘id‘=>8,‘name‘=>‘上地‘,‘parent‘=>2)
13 );
14
15
1
31
32 function subtree($arr,$id=0){
33      static $subs = array();  //静态属性只指向一个地址,不会每次引用都清空$subs;
34
35     foreach($arr as $v){
36         if($v[‘parent‘]  == $id){
37             $subs[] = $v;
38             subtree($arr,$v[‘id‘]);//
39         }
40     }
41     return $subs;
42 }
43 print_r(subtree($area,0));
44 ?>

static 总结

1:修饰类的属性和方法,静态属性,静态方法;

2:延迟绑定;static::method();

3:在函数中、方法中声明静态变量用

时间: 2024-10-10 21:20:27

无限极分类之查找子孙树的相关文章

无限级分类之查找子孙树和家谱树

子孙树是用递归查找指定栏目的所有子类,以及子类的子类,查找家谱树是查找制定栏目的父类和父类的父类,一致到顶级类 <?php $area=array( array('id'=>'1','name'=>'河南','parent'=>0), array('id'=>'2','name'=>'吉林','parent'=>0), array('id'=>'3','name'=>'北京','parent'=>0), array('id'=>'4','n

无限级分类之查找子孙树

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)

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

<?php // 无限级分类中,查家谱树 $area = array( 0=>array('cat_id'=>1,'cat_name'=>'北京市','parent_id'=>0), 1=>array('cat_id'=>2,'cat_name'=>'馆陶县','parent_id'=>5), 2=>array('cat_id'=>3,'cat_name'=>'海淀区','parent_id'=>1), 3=>array(

无限极分类中,查找子孙树

<?php // 无限级分类中,查找子树树 $area = array( 0=>array('cat_id'=>1,'cat_name'=>'北京市','parent_id'=>0), 1=>array('cat_id'=>2,'cat_name'=>'馆陶县','parent_id'=>5), 2=>array('cat_id'=>3,'cat_name'=>'海淀区','parent_id'=>1), 3=>array

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

在以前,遇到无限极分类返回一个节点的所有子孙节点时,我都是用递归计算的,后来发现时间复杂度和空间复杂度都太高了,后来自己研究了一下改进了算法. 节点数据如下:键值对分别是自己对应父亲节点 <?php $tree=array( 1=>0, 2=>1, 3=>2, 4=>3, 5=>4, 6=>5, 7=>6, 8=>7, 9=>8, 10=>9, 11=>10, ); ?> 以往算法如下: <?php function ge

无限级分类查找--子孙树,家谱树

无限级分类查找 $area=array(array('id'=>1,'name'=>'北京','parent'=>0),array('id'=>2,'name'=>'昌平','parent'=>1),array('id'=>3,'name'=>'海淀','parent'=>2),array('id'=>4,'name'=>'天津市','parent'=>0),array('id'=>5,'name'=>'市辖区','par

C#无限极分类树-创建-排序-读取 用Asp.Net Core+EF实现之方法二:加入缓存机制

在上一篇文章中我用递归方法实现了管理菜单,在上一节我也提到要考虑用缓存,也算是学习一下.Net Core的缓存机制. 关于.Net Core的缓存,官方有三种实现: 1.In Memory Caching 我理解是在内容中实现,这种方法适用于单服务器的生产环境. 2.a Distributed Cache 分部式缓存实现. 3.Response Cache 这种方式我理解为客户端缓存. 今天我只用了第一种实现方法,内存中缓存,之所以用这种方法我是觉得我这里用缓存的初衷是为了减少访问数据库的次数,

C#无限极分类树-创建-排序-读取 用Asp.Net Core+EF实现

今天做一个管理后台菜单,想着要用无限极分类,记得园子里还是什么地方见过这种写法,可今天找了半天也没找到,没办法静下心来自己写了: 首先创建节点类(我给它取名:AdminUserTree): 1 /// <summary> 2 /// 无限极节点类 3 /// </summary> 4 public class AdminUserTree 5 { 6 /// <summary> 7 /// 节点信息 8 /// </summary> 9 public int

创建无限极分类树型结构

先上效果图 顶级分类其实就是一级分类,二级分类也叫作一级分类的子分类,在这个基础上,子分类还可以拥有子分类,这样就构成了无限极分类. 接下来看具体实现的代码: 一.在控制器中按字段查询,查询出所有分类信息(id:该分类的ID值,cate_name:该分类的名称,pid:父ID,sorts:为显示标题顺序排序做准备,可不写.) 1 public function cate_display() 2 { 3 $cate = D('Cate'); 4 $field = array('id','cate_