文档章节

php常用无限级分类

zhiqiangw
 zhiqiangw
发布于 2016/12/07 15:13
字数 332
阅读 12
收藏 1
<?php
// +----------------------------------------------------------------------
// | Sphynx递归无限级分类多种情况
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2014 http://www.sunnyos.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: Sphynx <admin@sunnyos.com> QQ327388905
// +----------------------------------------------------------------------
/*
*+----------------------------------------------------------------------
*	递归无限级分类多种情况
*+----------------------------------------------------------------------
*/
class Cate{
	/*
	 * 适合后台列表遍历的格式
	 * @param $cate	 	要处理的分类数组
	 * @param $html		二级分类分隔符
	 * @param $pid		上级分类id
	 * @param $pad		分隔符数量
	 */
	public static function level($cate,$html='----',$pid=0,$pad=0){
		$arr = array();
		foreach ($cate as $key => $value) {
			if($value['pid']==$pid){
				$value['pad'] = $pad+1;
				$value['html'] = str_repeat($html,$pad);
				$arr[] = $value;
				$arr = array_merge($arr,self::level($cate,$html,$value['id'],$pad+1));
			}
		}
		return $arr;
	}

	/*
	 * 多维数组遍历,适合用于顶部菜单和列表
	 * @param $cate	 	要处理的分类数组
	 * @param $name		顶级分类之后的二级分类下标
	 * @param $pid		上级分类id
	 */
	public static function layer($cate,$name = 'child',$pid = 0){
		$arr = array();
		foreach ($cate as $v) {
			if($v['pid']==$pid){
				$v[$name] =  self::layer($cate,$name,$v['id']);
				$arr[] = $v;
			}
		}
		return $arr;
	}

	/*
	 * 通过子分类查找父级分类
	 * @param $cate	 	要处理的分类数组
	 * @param $id		子类id
	 */
	public static function getParents($cate,$id){
		$arr = array();
		foreach ($cate as $key => $value) {
			if($value['id']==$id){
				$arr[] = $value;
				$arr = array_merge(self::getParents($cate,$value['pid']),$arr);
			}
		}
		return $arr;
	}

	/*
	 * 通过父类查找子类分类
	 * @param $cate	 	要处理的分类数组
	 * @param $id		父类id
	 */
	public static function getFind($cate,$id){
		$arr = array();
		foreach ($cate as $key => $value) {
			if($value['pid']==$id){
				$arr[] = $value;
				$arr = array_merge($arr,self::getFind($cate,$value['id']));
			}
		}
		return $arr;
	}

}

© 著作权归作者所有

共有 人打赏支持
zhiqiangw
粉丝 12
博文 192
码字总数 142634
作品 0
郑州
程序员
私信 提问
无限级分类 for PHP+Mysql

一个PHP项目要用到分类,但不确认是4级还是需要用到5级,想着干脆做成无限级分类好了。 一开始想是按以前一样,数据库建4个值,如下: id: 自增 | pid: 父类ID | xid: 排序ID | classname: 分...

风沙
2014/04/12
0
0
无限级分销三级分佣 类似公众号:零购官网

【业务需求】 功能需求: 拥有普通商城常用下单功能,从微信端进入,识别用户OpenId自动注册成为会员,无限级分销三级分佣模式,可查看上三级推荐人, 可查看下三级推荐人及提佣情况,微信菜...

小偏执
2016/01/12
15
4
php递归算法

递归函数是我们常用到的一类函数,最基本的特点是函数自身调用自身,但必须在调用自身前有条件判断,否则无限无限调用下去。实现递归函数可以采取什么方式呢?本文列出了三种基本方式。理解其...

微雨初晴
2016/11/26
9
0
thinkphp3.1无限级分类模块的设计

实现无限级分类一般只用一个数据表,通常可通过递归和非递归两种方法来实现。递归方法必须使用递归 调用方式才能进行数据遍历,删除等操作,所以需要发送多次查询数据库语句,非常影响执行效...

网菠萝果
2013/03/23
0
1
三级分销+金融互助+固定分红+全球分红电商平台

【业务需求】 1、PC端系统改成基于微信端的页面展示。现有网站采用前后端分离方式开发,前端采用React、Bootstrap、RequireJS,后端采用PHP(Laravel框架),数据库为mysql5.5。 现有PC端直销...

kman9
2016/04/21
6
0

没有更多内容

加载失败,请刷新页面

加载更多

Nginx-使用简单总结

下载nginx:http://nginx.org/en/download.html 下载后解压 有很多种方法启动nginx (1)直接双击nginx.exe, 双击后一个黑色的弹窗一闪而过 (2)打开cmd命令窗口,切换到nginx解压目录下, 输入...

Java搬砖工程师
7分钟前
0
0
通过修改控制文件scn推进数据库scn

在数据库遇到ora-600[2662],scn不一致(又没有日志)的时候,我们首先想到的就是去推进数据库的scn,让数据库能够open起来,抢救其中的数据,但是由于各种乱用的情况,oraclescn的pach出来后(11.2...

突突突酱
8分钟前
1
0
Underscore _.template 方法使用详解

https://github.com/hanzichi/underscore-analysis/issues/26 前文 浅谈 Web 中前后端模板引擎的使用 我们简单了解了模板引擎在前后端的应用场景,本文重点深入 Underscore 的模板函数 _.te...

壹峰
9分钟前
0
0
前端缩短数字的长度解决方案[10进制转化为64进制]

function string10to64 (number) { var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_$'.split(''), radix = chars.length, qutient =......

未来cc
9分钟前
0
0
十年架构师不到400行手写一个Spring MVC

首先,我们先来介绍一下Spring的三个阶段,配置阶段、初始化阶段和运行阶段(如图): 配置阶段:主要是完成application.xml配置和Annotation配置。 初始化阶段:主要是加载并解析配置信息,...

小刀爱编程
10分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部