无限极分类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' ...
随机推荐
- [leetcode]Permutations II @ Python
原题地址:https://oj.leetcode.com/problems/permutations-ii/ 题意: Given a collection of numbers that might ...
- rqnoj-329-刘翔!加油!-二维背包
注意排除干扰项. 因为价值不会相等,所以价值的多少与本题没有任何关系,. 所以价值为干扰项,所以不用考虑. 二维背包,简单求解. #include<stdio.h> #include< ...
- SQL Server 数据库性能优化
分析比较执行时间计划读取情况 1. 查看执行时间和cpu set statistics time on select * from Bus_DevHistoryData set statistics ...
- IIS 7.5: HOW TO ENABLE TLS 1.1 AND TLS 1.2
In IIS 7.5, which is installed on Windows 2008 R2 servers, only SSL 3.0 and TLS 1.0 are enabled for ...
- HttpWebRequest抓取网页数据返回异常:远程服务器返回错误: (503) 服务器不可用
解决方法: HttpWebRequest request = (HttpWebRequest)WebRequest.Create(webURL); //声明一个H ...
- 阿里云centos安装ftp与svn过程
1.下载xshell或者secureCRT 2.登录centos或者服务器 3.安装vsftpd [root@xxx]# yum install vsftpd //安装vsftpd [root@xxx ...
- .net平台性能很不错的轻型ORM类Dapper
dapper只有一个代码文件,完全开源,你可以放在项目里的任何位置,来实现数据到对象的ORM操作,体积小速度快. 使用ORM的好处是增.删.改很快,不用自己写sql,因为这都是重复技术含量低的工作,还 ...
- 【Eclipse】如何在Eclipse中使用命令行?
如何在Eclipse中使用命令行? 虽然我们已经有了像 Eclipse 这样高级的 IDE,但是我们有时候也是需要在开发的时候使用 Windows 的命令行,来运行一些独立的程序.在两个程序中切换来切 ...
- BAT,你好!字幕组,再见!——也许要跟美剧说再见了~
对于美剧迷来说,上周的星期六(2014 年11 月 22 日)是黑色的一天. 11 月 22 日,人人影视暂时关站,并发布公告称网站正在清理内容.虽然这不是人人影视第一次关站清理,而且人人影视还给出提 ...
- java语言特性之一
package java.util.Collections; public static int indexOfSubList(List<?> source, List<?> ...