$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: 在函数/方法中,声明静态变量用
***/

寻找子树和子孙树 ,家谱树相关推荐

  1. php递归面包屑,php可应用于面包屑导航的递归寻找家谱树实现方法

    本文实例讲述了php可应用于面包屑导航的递归寻找家谱树实现方法.分享给大家供大家参考.具体实现方法如下:<?phpecho " ";$area = array(array(& ...

  2. Php数组面包屑导航,php可应用于面包屑导航的迭代寻找家谱树实现方法

    php是通过定义类来实现迭代器接口来构造迭代器,通过yield构造迭代器可以提高性能并节省系统开销,下面就跟着爱站技术频道小编的步伐来学习php可应用于面包屑导航的迭代寻找家谱树实现方法吧. 具体实现 ...

  3. php子孙树,递归 迭代 得到家谱树 子孙树

    $arr=array( array('id'=>'1','name'=>'吉林','parent'=>0), array('id'=>'2','name'=>'北京',' ...

  4. PHP之实现 家谱树,子孙树

    // 家谱树 function familytree2($arr,$id) { static $Tree = array(); foreach($arr as $k=>$v) { if($v-& ...

  5. 无限极分类JAVA 实现—查子孙树、家谱树

    无限极分类JAVA  实现-查子孙树.家谱树 效果展示: import java.util.*;public class Test {List<HashMap<String, Object ...

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

    <?php// 无限级分类中,查家谱树 $area = array( 0=>array('cat_id'=>1,'cat_name'=>'北京市','parent_id'=&g ...

  7. mysql 家谱树查询_无限级分类之查找子孙树和家谱树

    $area=array( array('id'=>'1','name'=>'河南','parent'=>0), array('id'=>'2','name'=>'吉林', ...

  8. 无限级分类之递归查找家谱树

    该代码为利用递归查找家谱树,但是建议使用迭代查找效果会更好. <?php /** 无限级找家谱树(向上级寻找)适用范围:面包屑导航****/$area = array(array('id'=&g ...

  9. java家谱树_青锋家谱系统-基于springboot+orgtree的青锋家谱树管理系统

    gen 青锋家谱系统:基于springboot架构的家谱项目系统 项目介绍 基于springboot.orgtree的家谱树管理系统,将纸质版的家谱进行电子化.信息化,建立家族的家谱血脉联系. [青锋 ...

最新文章

  1. 专访博世王红星:大数据和AI将是中国制造业升级新动力
  2. oracle 查看统计情报,Oracle 查看收集统计信息
  3. bootstrap框架中data-xxx 的属性
  4. 一步一步CCNA之六:交换机vtp配置
  5. MySQL高级-索引是什么
  6. js粘贴板为什么获取不到图片信息_【第1829期】复制黏贴上传图片和跨浏览器自动化测试...
  7. 玩转oracle 11g(28):ora-00064和程序异常终止
  8. oracle 31693,ORACLE expdp备份与ORA-31693、ORA-02354、ORA-01555
  9. 高三了,一模距本科线还差22,英语才28,怎么办啊
  10. oracle地理数据库,Oracle 中的多个地理数据库 (geodatabase)
  11. adobe photoshop cc 2014 安装失败
  12. 步步深入:MySQL 架构总览->查询执行流程->SQL 解析顺序(转)
  13. DELL r340服务器U盘安装Centos7
  14. java制作手机投射电脑_将Android手机投影到Win10计算机的最简单教程
  15. python 修改excel 路径_python更改已存在excel文件的方法
  16. 安卓备份文件提取 .bak文件解包 abe.jar
  17. word中将一种颜色的突出显示批量替换为另一种
  18. 修改TTF字体美化显示效果【原文转自:http://www.linuxfans.org/】
  19. java银行驻场开发,满满干货指导
  20. 浅谈Python类的属性和方法

热门文章

  1. 从0开始学递归和分治
  2. 解题:POI 2011 Strongbox
  3. Ubuntu下桌面死机的解决方法,无须重启
  4. win10怎么更改账户名称_如何自定义WIN10登陆界面的用户名?
  5. 个人博客系统【项目篇】
  6. ASP.NET程序员常用的85个工具
  7. 如何把两段即以上视频合并成一个
  8. 执行RMAN恢复的高级场景_还原使用旧版本的RMAN创建的备份
  9. promise是什么及其用法
  10. #汇编语言字符串的输出(dosbox运行时输出乱码问题解决)