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. 第三十二章 elk(3)- broker架构 + 引入logback

    实际中最好用的日志框架是logback,我们现在会直接使用logback通过tcp协议向logstash-shipper输入日志数据.在上一节的基础上修改!!! 一.代码 1.pom.xml < ...

  2. Go语言之进阶篇简单版并发服务器

    1.简单版并发服务器 示例1: package main import ( "fmt" "net" "strings" ) //处理用户请求 ...

  3. 在Asp.Net中使用SmtpMail发送邮件的方法

    在ASP中,就可以通过调用CDONTS组件发送简单邮件,在ASP.Net中,自然也可以.不同的是,.Net Framework中,将这一组件封装到了System.Web.Mail命名空间中. 一个典型 ...

  4. Android -- tools

    工具属性 Android 有一个专用的XML命名空间,用于使工具可以记录XML文件里的信息,并且在打包程序的进行把信息剥离到不会带来运行时期和下载大小的负面影响的程度. 这个命名空间的 URI 是 h ...

  5. hadoop无法启动

    dataNode 无法启动是配置过程中最常见的问题,主要原因是多次format namenode 造成namenode 和datanode的clusterID不一致.建议查看datanode上面的lo ...

  6. 编译GSLSDevil的全过程

      GLSLDevil是调试OpenGL程序的工具. GLSLDevil的新版本已经改名为GLSL-Debugger, github的地址在这里:http://glsl-debugger.github ...

  7. Python爬虫实战(二):爬百度贴吧

    代码: # _*_ coding:utf-8 _*_ import urllib import urllib2 import re class Tool: removingImg = re.compi ...

  8. OpenWrt Web界面修改及功能实现实例说明

    http://www.cnblogs.com/dwayne/archive/2012/04/21/2460830.html 通过上篇文章的介绍,我们应该了解了Lua语言在OpenWrt Web配置页面 ...

  9. Rainmeter 一部分 语法 中文教程

    ;Meter基本元素示例:;如果是[MeterStyle]表示Meter的公共Style,类似CSS的意义!!!;颜色可以使用网页的颜色定义方式,如半透明黄色:255.255.0.128=FFFF00 ...

  10. 扩展一个boot的插件—tooltip&做一个基于boot的表达验证

    在线演示 本地下载 (代码太多请查看原文) 加班,加班加班,我爱加班··· 我已经疯了,哦也. 这次发一个刚接触boot的时候用boot做的表单验证,我们扩展一下tooltip的插件,让他可以换颜色. ...