PHP 无限级分类


Posted in PHP onMay 04, 2017

有一段时间没用过无限极分类,不巧今天又用到,所以特地去翻箱回顾以前。为了避免以后找起来麻烦,特地贴在这里。

<?php
/**
 * 无限级分类 类
 */
class Category{
 /**
  * 返回一维数组
  * @param [type] $cate 要递归的数组
  * @param string $html 子级分类前要显示的缩进符号。默认 '─'
  * @param integer $pid 父级分类ID。默认为 0,表示顶级分类
  * @param integer $level level级,配合 $html 显示足够的缩进。默认为 1,表示顶级分类
  * @return [type]   [description]
  */
 static public function unlimitedForLevel($cate, $html = '─', $pid = 0, $level = 1){
  $arr = array();
  foreach($cate as $v){
   if($v['pid'] == $pid){
    $v['level'] = $level;
    $v['html'] = str_repeat($html, $level - 1);
    $arr[] = $v;
    $arr = array_merge($arr, $this->unlimitedForLevel($cate, $html, $v['id'], $level + 1));
   }
  }
  return $arr;
 }
 /**
  * 返回多维数组
  * @param [type] $cate 要递归的数组
  * @param string $name 子级分类在父分类数组中的 key
  * @param integer $pid 父级分类ID。默认为0,表示顶级分类
  * @return [type]  [description]
  */
 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返回所有父级分类
  * @param [type] $cate 要递归的数组
  * @param [type] $id 子分类ID
  * @return [type]  [description]
  */
 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
  * @param [type] $cate 要递归的数组
  * @param [type] $pid 父级分类ID
  * @return [type]  [description]
  */
 static public function getChildrenId($cate, $pid){
  $arr = array();
  foreach($cate as $v){
   if($v['pid'] == $pid){
    $arr[] = $v['id'];
    $arr = array_merge($arr, self::getChildrenId($cate, $v['id']));
   }
  }
  return $arr;
 }
 /**
  * 传递父级分类ID返回所有子级分类
  * @param [type] $cate 要递归的数组
  * @param [type] $pid 父级分类ID
  * @return [type]  [description]
  */
 static public function getChildren($cate, $pid){
  $arr = array();
  foreach($cate as $v){
   if($v['pid'] == $pid){
    $arr[] = $v;
    $arr = array_merge($arr, self::getChildren($cate, $v['id']));
   }
  }
  return $arr;
 }
}
?>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

PHP 相关文章推荐
一个没有MYSQL数据库支持的简易留言本的编写
Oct 09 PHP
删除及到期域名的查看(抢域名必备哦)
May 14 PHP
PHP教程之PHP中shell脚本的使用方法分享
Feb 23 PHP
PHP系列学习之日期函数使用介绍
Aug 18 PHP
FireFox浏览器使用Javascript上传大文件
Oct 30 PHP
FleaPHP框架数据库查询条件($conditions)写法总结
Mar 19 PHP
Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解
Oct 11 PHP
详解laravel安装使用Passport(Api认证)
Jul 27 PHP
利用PHP扩展Xhprof分析项目性能实践教程
Sep 05 PHP
Yii框架视图、视图布局、视图数据块操作示例
Oct 14 PHP
PHP设计模式(五)适配器模式Adapter实例详解【结构型】
May 02 PHP
thinkphp5.1 框架钩子和行为用法实例分析
May 25 PHP
PHP实现中国公民身份证号码有效性验证示例代码
May 03 #PHP
PHP基于Redis消息队列实现发布微博的方法
May 03 #PHP
Laravel5中Cookie的使用详解
May 03 #PHP
[原创]php实现数组按拼音顺序排序的方法
May 03 #PHP
PHP基于ICU扩展intl快速实现汉字转拼音及按拼音首字母分组排序的方法
May 03 #PHP
php中的异常和错误浅析
May 03 #PHP
利用php-cli和任务计划实现刷新token功能的方法
May 03 #PHP
You might like
JavaScript学习笔记(十)
2010/01/17 Javascript
JavaScript对象、属性、事件手册集合方便查询
2010/07/04 Javascript
js 优化次数过多的循环 考虑到性能问题
2011/03/05 Javascript
checkbox选中与未选中判断示例
2014/08/04 Javascript
js判断某个方法是否存在实例代码
2015/01/10 Javascript
jQuery模拟物体自由落体运动(附演示与demo源码下载)
2016/01/21 Javascript
移动端横屏的JS代码(beta)
2016/05/16 Javascript
Bootstrap复选框和单选按钮美化插件(推荐)
2016/11/23 Javascript
bootstrap fileinput 上传插件的基础使用
2017/02/17 Javascript
用angular实现多选按钮的全选与反选实例代码
2017/05/23 Javascript
vue.js todolist实现代码
2017/10/29 Javascript
js防抖和节流的深入讲解
2018/12/06 Javascript
Vue开发Html5微信公众号的步骤
2019/04/11 Javascript
微信小程序上传多图到服务器并获取返回的路径
2019/05/05 Javascript
layui复选框限制选择个数的方法
2019/09/18 Javascript
vue基本使用--refs获取组件或元素的实例
2019/11/07 Javascript
Python爬虫模拟登录带验证码网站
2016/01/22 Python
Python中断言Assertion的一些改进方案
2016/10/27 Python
python3使用pandas获取股票数据的方法
2018/12/22 Python
pycharm配置git(图文教程)
2019/08/16 Python
Python matplotlib绘制饼状图功能示例
2019/09/10 Python
Python控制台输出时刷新当前行内容而不是输出新行的实现
2020/02/21 Python
各大浏览器 CSS3 和 HTML5 兼容速查表 图文
2010/04/01 HTML / CSS
Original Penguin英国官方网站:美国著名休闲时装品牌
2016/10/30 全球购物
GetYourGuide台湾:预订旅游活动、景点和旅游项目
2019/06/10 全球购物
碧欧泉Biotherm加拿大官方网站:法国高端护肤品牌
2019/10/18 全球购物
成龙霸王洗发水广告词
2014/03/14 职场文书
关于安全的标语
2014/06/10 职场文书
酒店七夕情人节活动策划方案
2014/08/24 职场文书
新郎婚礼答谢词
2015/01/04 职场文书
股权投资协议书
2016/03/23 职场文书
2016年小学“感恩教师”主题队日活动总结
2016/04/01 职场文书
将Python代码打包成.exe可执行文件的完整步骤
2021/05/12 Python
四十九个javascript小知识实用技巧
2021/11/20 Javascript
Java 数组的使用
2022/05/11 Java/Android
MySQL数据库简介与基本操作
2022/05/30 MySQL