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 相关文章推荐
PHP中集成PayPal标准支付的实现方法分享
Feb 06 PHP
PHP自动识别字符集并完成转码详解
Aug 02 PHP
PHP实现微信发红包程序
Aug 24 PHP
PHP随手笔记整理之PHP脚本和JAVA连接mysql数据库
Nov 25 PHP
解析WordPress中函数钩子hook的作用及基本用法
Dec 22 PHP
php基于Fleaphp框架实现cvs数据导入MySQL的方法
Feb 23 PHP
PHP中调用C/C++制作的动态链接库的教程
Mar 10 PHP
PHP数学运算与数据处理实例分析
Apr 01 PHP
Json_decode 解析json字符串为NULL的解决方法(必看)
Feb 17 PHP
php xhprof使用实例详解
Apr 15 PHP
thinkphp 框架数据库切换实现方法分析
May 18 PHP
分享几种好用的PHP自定义加密函数(可逆/不可逆)
Sep 15 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
php实现天干地支计算器示例
2014/03/14 PHP
PHP下载生成的csv文件及问题总结
2015/08/06 PHP
linux下php上传文件注意事项
2016/06/11 PHP
javascript 检测浏览器类型和版本的代码
2009/09/15 Javascript
Js四则运算函数代码
2012/07/21 Javascript
js分解url参数(面向对象-极简主义法应用)
2012/08/09 Javascript
Underscore.js 的模板功能介绍与应用
2012/12/24 Javascript
JavaScript将Table导出到Excel实现思路及代码
2013/03/13 Javascript
js在输入框屏蔽按键,只能键入数字的示例代码
2014/01/03 Javascript
js中创建对象的几种方式示例介绍
2014/01/26 Javascript
jQuery将所有被选中的checkbox某个属性值连接成字符串的方法
2015/01/24 Javascript
JavaScript中连接操作Oracle数据库实例
2015/04/02 Javascript
jquery+html5时钟特效代码分享(可设置闹钟并且语音提醒)
2020/03/30 Javascript
js 获取范围内的随机数实例代码
2016/08/02 Javascript
利用jQuery插件imgAreaSelect实现图片上传裁剪(放大缩小)
2016/12/02 Javascript
js 取消页面可以选中文字的功能方法
2018/01/02 Javascript
Angular数据绑定机制原理
2018/04/17 Javascript
vue :src 文件路径错误问题的解决方法
2018/05/15 Javascript
浅析前端路由简介以及vue-router实现原理
2018/06/01 Javascript
jQuery轮播图实例详解
2018/08/15 jQuery
详解Vue+ElementUI从零开始搭建自己的网站(一、环境搭建)
2019/04/30 Javascript
使用vue实现多规格选择实例(SKU)
2019/08/23 Javascript
使用Element的InfiniteScroll 无限滚动组件报错的解决
2020/07/27 Javascript
python实现web方式logview的方法
2015/08/10 Python
python安装与使用redis的方法
2016/04/19 Python
Python中遍历字典过程中更改元素导致异常的解决方法
2016/05/12 Python
Python数学形态学实例分析
2019/09/06 Python
Python使用Opencv实现边缘检测以及轮廓检测的实现
2020/12/31 Python
浅谈h5自定义audio(问题及解决)
2016/08/19 HTML / CSS
Levi’s美国官网:美国著名的牛仔裤品牌
2016/08/19 全球购物
定制iPhone和Macbook保护壳:Slick Case
2018/11/21 全球购物
澳大利亚办公室装修:JasonL Office Furniture
2019/06/25 全球购物
文明班级建设方案
2014/05/15 职场文书
个人事迹材料怎么写
2014/12/30 职场文书
2016同学毕业寄语大全
2015/12/04 职场文书
教你做个可爱的css滑动导航条
2021/06/15 HTML / CSS