1、本文更新日期:2018/05/20 , 亲测可用,在原有基础上进行增强和 详细化 。

2、面包屑导航 和 子孙树 效果图如下:

3、代码:

<?php
// 无限级分类中,查家谱树(面包屑导航) ++ 子孙树(无限极分类) $area = array(
0=>array('id'=>1,'cat_name'=>'北京市','pid'=>0),
1=>array('id'=>2,'cat_name'=>'馆陶县','pid'=>3),
2=>array('id'=>3,'cat_name'=>'海淀区','pid'=>1),
3=>array('id'=>4,'cat_name'=>'朝阳区','pid'=>1),
); function fatherTree($arr,$id) {
static $Tree = array();
foreach($arr as $k=>$v) {
if($v['id'] == $id) {
$Tree[] = $v;
fatherTree($arr,$v['pid']); }
}
return $Tree;
} $list = fatherTree($area,2);
$list2 = $list;
//构成面包屑 如: 北京市 > 海淀区 > 馆陶县 ---- >>>> (不带跳转链接)
krsort($list2);//下标倒序排列
foreach($list2 as $v ){
$list_arr[] = $v['cat_name']; //仅含分类名称cat_name的一维数组
}
$url = implode(" > ",$list_arr);
echo "<pre>";
var_dump($url); //构成面包屑 如: 北京市 > 海淀区 > 馆陶县 ---- >>>> (带跳转标签<a>支持跳转)
function displayCatePath($data,$id, $url='index.php?id=') {
$res = fatherTree($data,$id);
krsort($res);//下标倒序排列
$str = '';
foreach($res as $k=>$val) {
$str .= "<a href='{$url}{$val['id']}'>{$val['cat_name']}</a>>";
}
return $str;
}
echo displayCatePath($area,10, 'cate.php?page=1&id='); echo "<br>"; // 无限级分类中,查找子孙树
function sonTree($arr,$pid = 0,$lev=1) {
static $Tree = array();
foreach($arr as $k=>$v) {
if($v['pid'] == $pid) {
if(!isset($v['lev'])) $v['lev']='';
$v['lev'] = $lev;
$Tree[] = $v;
sonTree($arr,$v['id'],$lev+1);
}
}
return $Tree;
} $list = sonTree($area,0,1);
foreach($list as $k=>$v) {
echo str_repeat('_+',$v['lev']-1),$v['cat_name'],'<br />';
} ?>

4、over,拿去用吧!

无限极分类php实现—查子孙树、家谱树的更多相关文章

  1. sqlalchemy tree 树形分类 无限极分类的管理。预排序树,左右值树。sqlalchemy-mptt

    简介: 无限极分类是一种比较常见的数据格式,生成组织结构,生成商品分类信息,权限管理当中的细节权限设置,都离不开无限极分类的管理. 常见的有链表式,即有一个Pid指向上级的ID,以此来设置结构.写的时 ...

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

    在上一篇文章中我用递归方法实现了管理菜单,在上一节我也提到要考虑用缓存,也算是学习一下.Net Core的缓存机制. 关于.Net Core的缓存,官方有三种实现: 1.In Memory Cachi ...

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

    今天做一个管理后台菜单,想着要用无限极分类,记得园子里还是什么地方见过这种写法,可今天找了半天也没找到,没办法静下心来自己写了: 首先创建节点类(我给它取名:AdminUserTree): /// & ...

  4. js实现无限极分类

    转载注明出处!!! 转载注明出处!!! 转载注明出处!!! 因为要实现部门通讯录,后台传来的数据是直接从数据库里拿的部门表,所以没有层级分类,只有parentId表示从属关系,所以分类的事情就交给我来 ...

  5. 夺命雷公狗ThinkPHP项目之----企业网站8之栏目的添加完善(无限极分类的完成)

    我们刚才只是完成了添加的一部分,但是我们的上级分类也不能永远都是只有一个死的嘛,所以我们需要对她进行修改: 我们先将add方法里面的数据查出来再说: 然后在模板页进行遍历: 展示效果如下所示: 虽然是 ...

  6. DotNet菜鸟入门之无限极分类(一)设计篇

    写这个教程的原因,是因为,无限极分类,在许多项目中,都用得到.而对于新手来说,不是很好理解,同时,操作上也有一些误区或者不当之处.所以我就斗胆,抛砖引玉一下,已一个常见的后台左侧频道树为例子,讲解一下 ...

  7. PHP实现菜单无限极分类

    菜单数据 这里我们的菜单数据是临时数据, 没有从数据库中查询处理,数据基本和数据库中的的相似. 数据如下: $items = array( 1 => array('id' => 1, 'p ...

  8. PHP 商城无限极分类

    无限极分类,用的是递归,在外部调用fen()方法即可 index是刚开始寻找的顶级分类,suo是为了在前端展示的时候缩进 ,$suo=){ 一个数组用来返回的 $t=[]; 这是查询数据库的所有内容 ...

  9. php 实现无限极分类

    原始数据 $array = array( array('id' => 1, 'pid' => 0, 'n' => '河北省'), array('id' => 2, 'pid' ...

随机推荐

  1. 基于Bootstrap+jQuery.validate Form表单验证实践

    基于Bootstrap jQuery.validate Form表单验证实践 项目结构 :     github 上源码地址:https://github.com/starzou/front-end- ...

  2. 转:TensorFlow入门(六) 双端 LSTM 实现序列标注(分词)

    http://blog.csdn.net/Jerr__y/article/details/70471066 欢迎转载,但请务必注明原文出处及作者信息. @author: huangyongye @cr ...

  3. Linux Kernel系列三:Kernel编译和链接中的linker script语法详解

    先要讲讲这个问题是怎么来的.(咱们在分析一个技术的时候,先要考虑它是想解决什么问题,或者学习新知识的时候,要清楚这个知识的目的是什么). 我在编译内核的时候,发现arch/arm/kernel目录下有 ...

  4. SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间。

    出现的错误:SqlDateTime 溢出.必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间. 错误的原因:.NET Framework dat ...

  5. O2O、C2C、B2B、B2C

    一.O2O.C2C.B2B.B2C的区别在哪里? O2O是Online to offline 分为四种运营模式 1.Online to offline 是线上交易到线下消费体验 2.Offline t ...

  6. python 导出mongoDB数据中的数据

    import pymongo,urllibimport sysimport timeimport datetimereload(sys)sys.setdefaultencoding('utf8')fr ...

  7. 轻量级分布式文件系统FastDFS使用安装说明手册(新手入门级)

    轻量级分布式文件系统FastDFS使用安装说明手册(新手入门级) 实验室所在的课题组以研究云计算为主,但所有的研究都是在基于理论的凭空想像,缺少分布式环境的平台的实践,云计算神马的都是浮云了.因此,我 ...

  8. Swift语言精要 - 序列化和反序列化

    在swift中你可以把一个对象转换成为数据,你所要做的就是 首先,你需要让对象实现NSObject和NSCoding协议. 其次,实现以下两个方法: encodeWithCoder init(code ...

  9. 使用windbg抓取崩溃文件和分析的过程

    在软件编程中,崩溃的场景比较常见的.且说微软技术再牛X,也是会出现崩溃的场景.网上有一段Win98当着比尔盖茨蓝屏的视频非常有意思. (转载请指明出于breaksoftware的csdn博客)     ...

  10. C#和网页js互调代码

    C#和网页js互调代码 1.先写个网页放在主程序目录下:test.html <!DOCTYPE html> <html lang="en" xmlns=" ...