$area=array(

array('id'=>'1','name'=>'河南','parent'=>0),

array('id'=>'2','name'=>'吉林','parent'=>0),

array('id'=>'3','name'=>'北京','parent'=>0),

array('id'=>'4','name'=>'信阳','parent'=>1),

array('id'=>'5','name'=>'郑州','parent'=>1),

array('id'=>'6','name'=>'长春','parent'=>2),

array('id'=>'7','name'=>'朝阳','parent'=>3),

array('id'=>'8','name'=>'海淀','parent'=>3)

);

//无限级分类之找子孙树

function subtree($arr,$id,$lev=1){

static $subs=array();//子孙数组

foreach ($arr as $v) {

if($v['parent']==$id){

$v['lev']=$lev;

$subs[]=$v;

subtree($arr,$v['id'],$lev+1);

}

}

return $subs;

}

$tree =subtree($area,0,1);

foreach ($tree as $v) {

echo str_repeat('  ', $v['lev']),$v['name'],'
';

}

// 若不用static,可以用array_merge()将数组连接起来

function subtree2($arr,$id,$lev=1){

$subs=array();//子孙数组

foreach ($arr as $v) {

if($v['parent']==$id){

$v['lev']=$lev;

$subs[]=$v;

$subs=array_merge($subs,subtree2($arr,$v['id'],$lev+1));

}

}

return $subs;

}

$tree2 =subtree2($area,0,1);

foreach ($tree2 as $v) {

echo str_repeat('  ', $v['lev']),$v['name'],'
';

}

// 无限极分类之查找家谱树

function familytree($arr,$id){

static $tree=array();

foreach($arr as $v){

if($v['id']==$id){

//判断要不要找父栏目

if($v['parent']>0){

familytree($arr,$v['parent']);

}

$tree[]=$v;

}

}

return $tree;

}

$fam=familytree($area,4);

print_r($fam);

// 迭代找家谱树

function famtree($arr,$id){

$tree=array();

while($id!==0){

foreach($arr as $v){

if($v['id']==$id){

$tree[]=$v;

$id=$v['parent'];

break;

}

}

}

return $tree;

}

print_r(famtree($area,4));

?>

mysql 家谱树查询_无限级分类之查找子孙树和家谱树相关推荐

  1. php mysql 一级分类_无限级分类 for PHP+Mysql

    一个PHP项目要用到分类,但不确认是4级还是需要用到5级,想着干脆做成无限级分类好了. 一开始想是按以前一样,数据库建4个值,如下: id: 自增   |   pid: 父类ID   |  xid: ...

  2. java mysql 多表查询_解析Mysql多表查询的实现

    查询是数据库的核心,下面就为您介绍Mysql多表查询时如何实现的,如果您在Mysql多表查询方面遇到过问题,不妨一看. Mysql多表查询: CREATE TABLE IF NOT EXISTS co ...

  3. mysql怎么子查询_在mysql中如何进行子查询?

    在mysql中,子查询是指将一个查询语句嵌套在另一个查询语句中,可以在SELECT.UPDATE和 DELETE语句中配合WHERE子句进行实现,WHERE子句中语法格式为"WHERE (另 ...

  4. mysql 利用时间查询_利用时间的艺术

    mysql 利用时间查询 Oh dear! If I had a dime every time (I just rhymed - twice!) someone, including me, com ...

  5. mysql中文模糊查询_解决MySQL中文模糊查询问题

    解决MySQL中文模糊查询问题: 我们在MySQL中进行中文模糊查询时,经常会返回一些与之不相关的记录,比如查找%a%时,返回的可能有中文字符,却没有a字符存在.对于此问题目前发现一种方法可以很方便解 ...

  6. b+树时间复杂度_图解:计算机数据结构中的 6 种「树」,你心中有数了吗?

    数据结构这门课程是计算机相关专业的基础课,数据结构指的是数据在计算机中的存储.组织方式. 我们在学习数据结构时候,会遇到各种各样的基础数据结构,比如堆栈.队列.数组.链表.树...这些基本的数据结构类 ...

  7. mysql 家谱树查询_族谱树算法

    小编典典 第一个问题是设计数据模式 :我保留带有父行外键的层次结构.很简单. 第二个问题,检索上升/下降 :正如您所解释的,select带来的问题是:选择某些人和所有上升后代.为了解决这个问题,您应该 ...

  8. mysql 家谱树查询_中国家谱族谱数据库可以登录、查询了

    原标题:中国家谱族谱数据库可以登录.查询了 中青在线武汉6月6日电(党波涛 中国青年报·中青在线记者 雷宇)数据量全球第一,最早可追溯到明朝万历年间.华中师范大学中国农村研究院今天对外发布,由该院建设 ...

  9. mysql user分销查询_荐查询无限级/三级分销的简单易用SQL...

    三级分销已是一个越来越常见的需求.如何去获取到分销商的下级?如何去获取上级分销商?这里提供几条sql语句,无需创建存储过程/函数,简单易用. 本文中,采用邻接表的方式来进行处理,什么是邻接表?有没有其 ...

最新文章

  1. 此字符不允许在标识符中使用_计算机中C语言的-基本语法
  2. 只需两行代码,2080Ti 就能当 V100用,这个炼丹神器真牛!
  3. 1个人70万行代码,20年持续更新,这款游戏号称开发到死,永不停更
  4. 玩转springboot:日志的使用
  5. 硬盘基本知识(磁头、磁道、扇区、柱面) 转
  6. 【Eclipse】Java Compiler没有Annotaion Processing, 需要安装Eclipse Java Development Tools
  7. 7 centos 查看程序文件数量_解析CentOS 7中系统文件与目录管理
  8. 【孤儿进程】孤儿进程组、守护进程
  9. 苹果多款产品降价:iPhone XS系列降价500元 14天内可退差价
  10. Python统计共同参演电影最多的演员组合
  11. oracle11.2.03,升级Oracle11.2.0.3后遭遇ORA-00600[kfioTranslateIO03][17090]
  12. 多功能工具箱微信小程序源码
  13. POI多个Sheet生成Excel
  14. 华为交换机Hybird 与 单臂路由
  15. 小程序-e.detail.value动态获取input的value
  16. 搞笑GIF动图怎么制作
  17. Photoshop CC 2019 软件安装教程
  18. (JAVA) 相邻数对
  19. MII,RMII,GMII接口详细介绍
  20. 智能家居赛道上,小米vs华为谁更有优势?

热门文章

  1. 明日之后无限信用点的服务器,明日之后免费刷信用点特别版
  2. Fabric CA官方文档翻译——Planning for a CA
  3. 甬矽电子科创板上市:年营收21亿募资11亿 市值122亿
  4. 【第八课】用于三维建模的拍摄技巧(用手机、相机拍摄)
  5. 用python画小鸭,Python 处理输入法字库(五笔极点字库转小鸭字库)
  6. 【NOI2015】BZOJ4199品酒大会题解(SAM+树形DP)
  7. 解决:el-input添加clearable属性后出现2个×清除图标
  8. 廊坊圣洁口去医院明星同款·隐形矫正试戴会圆满举办!
  9. ESLint语法检查--semi(分号)规则
  10. CSP在线考试环境 | OBS录屏软件下载安装和设置教程