[thinkphp] 无限极分类
<?php
/*
* 无限极分类 类
*/
header("Content-Type: text/html; charset=UTF-8");
Class Category {
//组合一维数组
Static Public function unlimitedForLevel ($cate, $html = '--', $pid = 0, $level = 0) {
$arr = array();
foreach ($cate as $k => $v) {
if ($v['pid'] == $pid) {
$v['level'] = $level + 1;
$v['html'] = str_repeat($html, $level);
$arr[] = $v;
$arr = array_merge($arr, self::unlimitedForLevel($cate, $html, $v['id'], $level + 1));
}
}
return $arr;
}
//组合多维数组
Static Public function unlimitedForLayer ($cate, $name = 'child', $pid = 0) {
$arr = array();
foreach ($cate as $v) {
if ($v['pid'] == $pid) {
$v[$name] = self::unlimitedForLayer($cate, $name, $v['id']);
$arr[] = $v;
}
}
return $arr;
}
//传递一个子分类ID返回所有的父级分类
Static Public function getParents ($cate, $id) {
$arr = array();
foreach ($cate as $v) {
if ($v['id'] == $id) {
$arr[] = $v;
$arr = array_merge(self::getParents($cate, $v['pid']), $arr);
}
}
return $arr;
}
//传递一个父级分类ID返回所有子分类ID
Static Public function getChildsId ($cate, $pid) {
$arr = array();
foreach ($cate as $v) {
if ($v['pid'] == $pid) {
$arr[] = $v['id'];
$arr = array_merge($arr, self::getChildsId($cate, $v['id']));
}
}
return $arr;
}
//传递一个父级分类ID返回所有子分类
Static Public function getChilds ($cate, $pid) {
$arr = array();
foreach ($cate as $v) {
if ($v['pid'] == $pid) {
$arr[] = $v;
$arr = array_merge($arr, self::getChilds($cate, $v['id']));
}
}
return $arr;
} } $cate = array(
0 => array('id' => 1, 'pid' => 0, 'name' => '江西省'),
1 => array('id' => 2, 'pid' => 0, 'name' => '浙江省'),
2 => array('id' => 3, 'pid' => 1, 'name' => '上饶市'),
3 => array('id' => 4, 'pid' => 3, 'name' => '广丰县'),
4 => array('id' => 5, 'pid' => 2, 'name' => '杭州市'),
5 => array('id' => 6, 'pid' => 5, 'name' => '西湖'),
6 => array('id' => 7, 'pid' => 6, 'name' => '断桥'),
);
//print_r(Category::unlimitedForLevel($cate));
print_r(Category::unlimitedForLayer($cate));
//print_r(Category::getParents($cate,7));
//print_r(Category::getChildsId($cate,2));
//print_r(Category::getChilds($cate,2));
?>
转自:http://www.thinkphp.cn/topic/13132.html
[thinkphp] 无限极分类的更多相关文章
- thinkphp 无限极分类的数据库设计及效果测试
控制器继承IndexAction.class.php <?php // 本类由系统自动生成,仅供测试用途 class IndexAction extends CateAction { } ?&g ...
- thinkphp 实现无限极分类
thinkphp实现无限极分类,获得所有的子类 今天学习测试了一上午也没有整出来,一开始一直没有办法把所有的子分类拿出来. 最后找到原因: 每次调用的时候没有在最后return的位置我没有选择retu ...
- php无限极分类以及递归(thinkphp)
php无限极分类: 无限极分类重点在于表的设计: 1在model中: class CatModel extends Model{ protected $cat = array(); public fu ...
- 夺命雷公狗ThinkPHP项目之----企业网站8之栏目的添加完善(无限极分类的完成)
我们刚才只是完成了添加的一部分,但是我们的上级分类也不能永远都是只有一个死的嘛,所以我们需要对她进行修改: 我们先将add方法里面的数据查出来再说: 然后在模板页进行遍历: 展示效果如下所示: 虽然是 ...
- thinkphp5.0无限极分类及格式化输出
首先我们来看数据表 从上图中可以发现,中国下有贵州,北京两个子节点,而北京有天安门一个子节点,纽约的子节点是"纽约的子类". 从pid为0看出,中国和纽约是顶级节点. 因为贵州的p ...
- js实现无限极分类
转载注明出处!!! 转载注明出处!!! 转载注明出处!!! 因为要实现部门通讯录,后台传来的数据是直接从数据库里拿的部门表,所以没有层级分类,只有parentId表示从属关系,所以分类的事情就交给我来 ...
- C#无限极分类树-创建-排序-读取 用Asp.Net Core+EF实现之方法二:加入缓存机制
在上一篇文章中我用递归方法实现了管理菜单,在上一节我也提到要考虑用缓存,也算是学习一下.Net Core的缓存机制. 关于.Net Core的缓存,官方有三种实现: 1.In Memory Cachi ...
- PHP无限极分类
当你学习php无限极分类的时候,大家都觉得一个字“难”我也觉得很难,所以,现在都还在看,因为工作要用到,所以,就必须得研究研究. 到网上一搜php无限极分类,很多,但好多都是一个,并且,写的很乱, ...
- PHP无限极分类,多种方法|很简单,这里说的很详细,其它地方说的很不好懂
当你学习php无限极分类的时候,大家都觉得一个字"难"我也觉得很难,所以,现在都还在看,因为工作要用到,所以,就必须得研究研究. 到网上一搜php无限极分类,很多,但好多都是一 ...
随机推荐
- 轮廓算法的结果验证工具/How to validate the outline output
因为轮廓算法的结果通过直接观察输出很难判断结果的正确性. 但是如果把输入和输出同时绘制出来,用眼睛判别则相对简单许多. 输入建筑的文件内容格式为,粗体格式为建筑高度: 10 110 5020 60 7 ...
- [洛谷P3629] [APIO2010]巡逻
洛谷题目链接:[APIO2010]巡逻 题目描述 在一个地区中有 n 个村庄,编号为 1, 2, ..., n.有 n – 1 条道路连接着这些村 庄,每条道路刚好连接两个村庄,从任何一个村庄,都可以 ...
- jquery字符串序列化方法总结
在jquery中字符串序列化方法包括有param() .serialize() .serializeArray(),在这里对其常用做法进行总结. $.param()方法这是serialize()方法的 ...
- 随机生成数组函数+nth-element函数
这几天做了几道随机生成数组的题,且需要用nth-elemeng函数,并且都是北航出的多校题…… 首先我们先贴一下随机生成数组函数的代码: unsigned x = A, y = B, z = C; u ...
- Intersecting Lines (计算几何基础+判断两直线的位置关系)
题目链接:http://poj.org/problem?id=1269 题面: Description We all know that a pair of distinct points on a ...
- HDU 2639 Bone Collector II (dp)
题目链接 Problem Description The title of this problem is familiar,isn't it?yeah,if you had took part in ...
- hdu 2059 龟兔赛跑(动态规划DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2059 龟兔赛跑 Time Limit: 1000/1000 MS (Java/Others) M ...
- Linux简介——(一)
1. 常见操作系统 - 服务端操作系统 : linux.unix.windows server - 单机操作系统 : windows(dos .ucdos.win95.win98.win2000.xp ...
- perl6中的q/qq/qx/qqx
q不内插 qq内插 qx不内插 qqx内插
- Javascript正则表达式详细讲解和示例,通俗易懂
正则表达式可以: •测试字符串的某个模式.例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式.这称为数据有效性验证 •替换文本.可以在文档中使用一个正则表达式 ...