无限极分类php实现—查子孙树、家谱树
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实现—查子孙树、家谱树的更多相关文章
- sqlalchemy tree 树形分类 无限极分类的管理。预排序树,左右值树。sqlalchemy-mptt
简介: 无限极分类是一种比较常见的数据格式,生成组织结构,生成商品分类信息,权限管理当中的细节权限设置,都离不开无限极分类的管理. 常见的有链表式,即有一个Pid指向上级的ID,以此来设置结构.写的时 ...
- C#无限极分类树-创建-排序-读取 用Asp.Net Core+EF实现之方法二:加入缓存机制
在上一篇文章中我用递归方法实现了管理菜单,在上一节我也提到要考虑用缓存,也算是学习一下.Net Core的缓存机制. 关于.Net Core的缓存,官方有三种实现: 1.In Memory Cachi ...
- C#无限极分类树-创建-排序-读取 用Asp.Net Core+EF实现
今天做一个管理后台菜单,想着要用无限极分类,记得园子里还是什么地方见过这种写法,可今天找了半天也没找到,没办法静下心来自己写了: 首先创建节点类(我给它取名:AdminUserTree): /// & ...
- js实现无限极分类
转载注明出处!!! 转载注明出处!!! 转载注明出处!!! 因为要实现部门通讯录,后台传来的数据是直接从数据库里拿的部门表,所以没有层级分类,只有parentId表示从属关系,所以分类的事情就交给我来 ...
- 夺命雷公狗ThinkPHP项目之----企业网站8之栏目的添加完善(无限极分类的完成)
我们刚才只是完成了添加的一部分,但是我们的上级分类也不能永远都是只有一个死的嘛,所以我们需要对她进行修改: 我们先将add方法里面的数据查出来再说: 然后在模板页进行遍历: 展示效果如下所示: 虽然是 ...
- DotNet菜鸟入门之无限极分类(一)设计篇
写这个教程的原因,是因为,无限极分类,在许多项目中,都用得到.而对于新手来说,不是很好理解,同时,操作上也有一些误区或者不当之处.所以我就斗胆,抛砖引玉一下,已一个常见的后台左侧频道树为例子,讲解一下 ...
- PHP实现菜单无限极分类
菜单数据 这里我们的菜单数据是临时数据, 没有从数据库中查询处理,数据基本和数据库中的的相似. 数据如下: $items = array( 1 => array('id' => 1, 'p ...
- PHP 商城无限极分类
无限极分类,用的是递归,在外部调用fen()方法即可 index是刚开始寻找的顶级分类,suo是为了在前端展示的时候缩进 ,$suo=){ 一个数组用来返回的 $t=[]; 这是查询数据库的所有内容 ...
- php 实现无限极分类
原始数据 $array = array( array('id' => 1, 'pid' => 0, 'n' => '河北省'), array('id' => 2, 'pid' ...
随机推荐
- boost::asio::ip::tcp实现网络通信的小例子
同步方式: Boost.Asio是一个跨平台的网络及底层IO的C++编程库,它使用现代C++手法实现了统一的异步调用模型. 头文件 #include <boost/asio.hpp> 名空 ...
- go语言之进阶篇主协程先退出
1.主协程先退出 示例: package main import ( "fmt" "time" ) //主协程退出了,其它子协程也要跟着退出 func main ...
- easyui combobox默认选中项
今天写前端代码发现combobox还挺难搞, $("#select_Dic").combobox({ url: "http: ...
- 八一八android开发规范(一种建议)
开发规范重不重要了,不言而喻.这里就给大家说一故事把——据<圣经·旧约·创世记>第11章记载,是当时人类联合起来兴建,希望能通往天堂的高塔.为了阻止人类的计划,上帝让人类说不同的语言,使人 ...
- Python爬虫实例(三)代理的使用
一些网站会有相应的反爬虫措施,例如很多网站会检测某一段时间某个IP的访问次数,如果访问频率太快以至于看起来不像正常访客,它可能就会会禁止这个IP的访问.所以我们需要设置一些代理服务器,每隔一段时间换一 ...
- 使用tensorflow的lstm网络进行时间序列预测
https://blog.csdn.net/flying_sfeng/article/details/78852816 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog. ...
- 1 R语言介绍
注释:# 赋值:<- 查看.设定当前工作目录:getwd() setwd() wd:workspace directory[setwd("c:/myproject/project ...
- Eclipse版本控制Git不能Pull或者Push
如下图,addWcLesson.jsp做了修改,但是却显示蓝色√,而且在Eclipse的Git提交插件中也没有监测到修改的文件,导致无法Push and Commit 原因:之前有些文件执行了 ...
- 如何用Javascript检测到所有的IE版本
如何用Javascript检测到所有的IE版本 function GetIEVersion() { var sAgent = window.navigator.userAgent; var Idx = ...
- "Ext 4.1 Grid 'el.dom' 为空或不是对象"问题的解决
我在使用Ext 4.1 做Grid,IE下冒出这么个错误,导致表格完全显示不出来,换另外一个IE浏览器,有没有问题,呵呵,百思不得其解啊... 后来得出答案,即在grid相关代码周围套上Ext.onR ...