文档章节

php常用无限级分类

zhiqiangw
 zhiqiangw
发布于 2016/12/07 15:13
字数 332
阅读 10
收藏 1
点赞 0
评论 0
<?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
php递归算法

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

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

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

网菠萝果
2013/03/23
0
1
内容管理系统--LuLu CMS

LuLu CMS是一款功能强大的、基于Yii2框架开发的内容管理系统。 系统分为前端和后端两部分。 主要功能特色包含: 1、基于强大的Yii2框架 2、、模块化开发方式, 3、集成强大的角色、权限管理功...

yiifans
2015/07/12
4.3K
1
PHP博客系统--WBlog

Wblog是一个基于thinkphp3.1框架开发的轻量级的简洁实用的PHP博客系统,倡导“大道至简,开发由我”的理念,用最少的代码完成更多的功能。更多功能仍在完善中。。。 目前主要功能:   主博...

匿名
2012/11/02
2.5K
0
网上商店软件--eCart

eCart是一个采用PHP+MySQL构建的开源电子商务网店系统。可以在在一个管理界面管理多个网店,支持产品无限级分类和One Page Checkout(一页结账流程)等功能。前台客户可以比较商品,将商品放...

匿名
2009/06/11
3.1K
0
php &符号的问题

//生成无限极分类树 function make_tree($arr){ $refer = array(); $tree = array(); foreach($arr as $k => $v){ $refer[$v['id']] = & $arr[$k]; //创建主键的数组引用 } foreach($arr as ......

manbudezhu
2016/07/06
200
3
递归 尾递归 迭代 回调

小知识点 函数式编程有一个概念,叫做柯里化(currying),意思是将多参数的函数转换成单参数的形式 如果一个函数中所有递归形式的调用都出现在函数的末尾,我们称这个递归函数是尾递归的.当...

winnie_5d76
2017/11/29
0
0
企业网站管理系统--17Joys CMS

17Joys CMS是一套使用ThinkPHP框架开发,基于PHP+MYSQL免费开源的企业网站系统; 开发目的:为了让跟多的PHP爱好者掌握ThinkPHP框架开发,我们提供CMS源码作为教学案例,希望更多的PHP爱好者...

马明
2010/04/28
10.5K
0
基于 Yii 框架的企业网站内容管理系统--mtcms

mtcms是一款开源的中小型企业cms网站内容管理系统,基于yii framework框架构建,已成功制作运营几十个企业网站案例,现将开源出来供广大yii学习爱好者分享交流。 mtcms制作的初衷是为了yii的...

匿名
2011/10/31
8.1K
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Android Studio 3.0 之后打包apk出现应用未安装问题

1、废话 出现这个问题的原因,并不是只有一个,而是有多个原因,不懂的估计会被搞得一头雾水,下面我列举的是我遇到的几种问题和网友遇到的几种问题,但不一定是全部,也有可能有些莫名其妙的...

她叫我小渝
22分钟前
0
0
前端基础

1. get请求传参长度的误区 误区:我们经常说get请求参数的大小存在限制,而post请求的参数大小是无限制的。 实际上HTTP 协议从未规定 GET/POST 的请求长度限制是多少。对get请求参数的限制是...

wenxingjun
今天
0
0
拦截SQLSERVER的SSL加密通道替换传输过程中的用户名密码实现运维审计(一)

工作准备 •一台SQLSERVER 2005/SQLSERVER 2008服务 •SQLSERVER jdbc驱动程序 •Java开发环境eclipse + jdk1.8 •java反编译工具JD-Core 反编译JDBC分析SQLSERVER客户端与服务器通信原理 SQ...

紅顏為君笑
今天
7
0
jQuery零基础入门——(六)修改DOM结构

《jQuery零基础入门》系列博文是在廖雪峰老师的博文基础上,可能补充了个人的理解和日常遇到的点,用我的理解表述出来,主干出处来自廖雪峰老师的技术分享。 在《零基础入门JavaScript》的时...

JandenMa
今天
0
0
linux mint 1.9 qq 安装

转: https://www.jianshu.com/p/cdc3d03c144d 1. 下载 qq 轻聊版,可在百度搜索后下载 QQ7.9Light.exe 2. 去wine的官网(https://wiki.winehq.org/Ubuntu) 安装 wine . 提醒网页可以切换成中...

Canaan_
今天
0
0
PHP后台运行命令并管理运行程序

php后台运行命令并管理后台运行程序 class ProcessModel{ private $pid; private $command; private $resultToFile = ''; public function __construct($cl=false){......

colin_86
今天
1
0
数据结构与算法4

在此程序中,HighArray类中的find()方法用数据项的值作为参数传递,它的返回值决定是否找到此数据项。 insert()方法向数组下一个空位置放置一个新的数据项。一个名为nElems的字段跟踪记录着...

沉迷于编程的小菜菜
今天
1
1
fiddler安装和基本使用以及代理设置

项目需求 由于开发过程中客户端和服务器数据交互非常频繁,有时候服务端需要知道客户端调用接口传了哪些参数过来,这个时候就需要一个工具可以监听这些接口请求参数,已经接口的响应的数据,这种...

银装素裹
今天
0
0
Python分析《我不是药神》豆瓣评论

读取 Mongo 中的短评数据,进行中文分词 对分词结果取 Top50 生成词云 生成词云效果 看来网上关于 我不是药神 vs 达拉斯 的争论很热啊。关于词频统计就这些,代码中也会完成一些其它的分析任...

猫咪编程
今天
0
0
虚拟机怎么安装vmware tools

https://blog.csdn.net/tjcwt2011/article/details/72638977

AndyZhouX
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部