寻找子树和子孙树 ,家谱树
$area = array(
array('id'=>1,'name'=>'安徽','parent'=>0),
array('id'=>2,'name'=>'海淀','parent'=>7),
array('id'=>3,'name'=>'濉溪县','parent'=>5),
array('id'=>4,'name'=>'昌平','parent'=>7),
array('id'=>5,'name'=>'淮北','parent'=>1),
array('id'=>6,'name'=>'朝阳','parent'=>7),
array('id'=>7,'name'=>'北京','parent'=>0),
array('id'=>8,'name'=>'上地','parent'=>2),
array('id'=>9,'name'=>'九把刀','parent'=>8),
array('id'=>10,'name'=>'中华','parent'=>4),
);//找子栏目 0是 找指定栏目的子栏目function son($arr,$id){$son=array();foreach($arr as $val){if($val['parent']==$id){$son[]=$val;}}return $son;}echo '<pre>';$a=son($area,7);print_r($a);
查找子孙树:
/*
function sons($arr,$id,$lev=1){static $son=array(); function 里面的static 的 $son 只初始化一次~~开辟了一个新空间出来给它 重新调用函数 它的值都是上次改变以后的值~~~foreach($arr as $val){if($val['parent']==$id){$val['lev']=$lev; //增加数组的单元~$son[]=$val;sons($arr,$val['id'],$lev+1);}}return $son;
}$b=sons($area,7); //先把结果搞成是数组 之后通过各种函数就好处理了~~~~所以先不要在函数里面想输出 指定格式foreach($b as $k=>$v){ //而是先变成一个数组 在遍历 慢慢输入自己想要的方式~~echo str_repeat('-',$v['lev']).$v['name'].'<br />';
}
//print_r($b);*/function sons($arr,$id,$lev=1){$son=array(); //不用static foreach ($arr as $val){if($val['parent'] == $id){$val['lev']=$lev;$son[]=$val;$son=array_merge($son,sons($arr,$val['id'],$lev+1)); array_merge()合并两个数组~}}return $son;
}
$b=sons($area,7);
//print_r($b);
结果: 往下找
Array
([0] => Array([id] => 2[name] => 海淀 [parent] => 7[lev] => 1)[1] => Array([id] => 8[name] => 上地[parent] => 2[lev] => 2)[2] => Array([id] => 9[name] => 九把刀[parent] => 8[lev] => 3)[3] => Array([id] => 4[name] => 昌平[parent] => 7[lev] => 1)[4] => Array([id] => 10[name] => 中华[parent] => 4[lev] => 2)[5] => Array([id] => 6[name] => 朝阳[parent] => 7[lev] => 1)
家谱树:
function parent($arr,$id){$par=array();foreach($arr as $val){if($val['id'] == $id){$par[]=$val;if($val['parent']!=0){$par=array_merge(parent($arr,$val['parent']),$par) ;}}}return $par;
}echo '<pre >';
$a=parent($area,10);
print_r($a);
结果:
Array
([0] => Array([id] => 7[name] => 北京[parent] => 0)[1] => Array([id] => 4[name] => 昌平[parent] => 7)[2] => Array([id] => 10[name] => 中华[parent] => 4))
/***
在函数中声明的static 静态变量,
无论此函数调用多少次,只初始化一次.
以后就会直接沿用该变量,
这在递归时,很有用.
static总结
1: 修饰类的属性与方法为静态属性,静态方法
2: static::method(), 延迟绑定
3: 在函数/方法中,声明静态变量用
***/
寻找子树和子孙树 ,家谱树相关推荐
- php递归面包屑,php可应用于面包屑导航的递归寻找家谱树实现方法
本文实例讲述了php可应用于面包屑导航的递归寻找家谱树实现方法.分享给大家供大家参考.具体实现方法如下:<?phpecho " ";$area = array(array(& ...
- Php数组面包屑导航,php可应用于面包屑导航的迭代寻找家谱树实现方法
php是通过定义类来实现迭代器接口来构造迭代器,通过yield构造迭代器可以提高性能并节省系统开销,下面就跟着爱站技术频道小编的步伐来学习php可应用于面包屑导航的迭代寻找家谱树实现方法吧. 具体实现 ...
- php子孙树,递归 迭代 得到家谱树 子孙树
$arr=array( array('id'=>'1','name'=>'吉林','parent'=>0), array('id'=>'2','name'=>'北京',' ...
- PHP之实现 家谱树,子孙树
// 家谱树 function familytree2($arr,$id) { static $Tree = array(); foreach($arr as $k=>$v) { if($v-& ...
- 无限极分类JAVA 实现—查子孙树、家谱树
无限极分类JAVA 实现-查子孙树.家谱树 效果展示: import java.util.*;public class Test {List<HashMap<String, Object ...
- 无限极分类php实现—查子孙树、家谱树
<?php// 无限级分类中,查家谱树 $area = array( 0=>array('cat_id'=>1,'cat_name'=>'北京市','parent_id'=&g ...
- mysql 家谱树查询_无限级分类之查找子孙树和家谱树
$area=array( array('id'=>'1','name'=>'河南','parent'=>0), array('id'=>'2','name'=>'吉林', ...
- 无限级分类之递归查找家谱树
该代码为利用递归查找家谱树,但是建议使用迭代查找效果会更好. <?php /** 无限级找家谱树(向上级寻找)适用范围:面包屑导航****/$area = array(array('id'=&g ...
- java家谱树_青锋家谱系统-基于springboot+orgtree的青锋家谱树管理系统
gen 青锋家谱系统:基于springboot架构的家谱项目系统 项目介绍 基于springboot.orgtree的家谱树管理系统,将纸质版的家谱进行电子化.信息化,建立家族的家谱血脉联系. [青锋 ...
最新文章
- 专访博世王红星:大数据和AI将是中国制造业升级新动力
- oracle 查看统计情报,Oracle 查看收集统计信息
- bootstrap框架中data-xxx 的属性
- 一步一步CCNA之六:交换机vtp配置
- MySQL高级-索引是什么
- js粘贴板为什么获取不到图片信息_【第1829期】复制黏贴上传图片和跨浏览器自动化测试...
- 玩转oracle 11g(28):ora-00064和程序异常终止
- oracle 31693,ORACLE expdp备份与ORA-31693、ORA-02354、ORA-01555
- 高三了,一模距本科线还差22,英语才28,怎么办啊
- oracle地理数据库,Oracle 中的多个地理数据库 (geodatabase)
- adobe photoshop cc 2014 安装失败
- 步步深入:MySQL 架构总览->查询执行流程->SQL 解析顺序(转)
- DELL r340服务器U盘安装Centos7
- java制作手机投射电脑_将Android手机投影到Win10计算机的最简单教程
- python 修改excel 路径_python更改已存在excel文件的方法
- 安卓备份文件提取 .bak文件解包 abe.jar
- word中将一种颜色的突出显示批量替换为另一种
- 修改TTF字体美化显示效果【原文转自:http://www.linuxfans.org/】
- java银行驻场开发,满满干货指导
- 浅谈Python类的属性和方法