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 相关文章推荐
如何开发一个虚拟域名系统
Oct 09 PHP
php zend 相对路径问题
Jan 12 PHP
php empty函数 使用说明
Aug 10 PHP
深入理解PHP原理之Session Gc的一个小概率Notice
Apr 12 PHP
PHP中$this和$that指针使用实例
Jan 06 PHP
Laravel Memcached缓存驱动的配置与应用方法分析
Oct 08 PHP
PHP中call_user_func_array回调函数的用法示例
Nov 26 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
Aug 31 PHP
PHP使用Nginx实现反向代理
Sep 20 PHP
ThinkPHP5框架实现简单的批量查询功能示例
Jun 07 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
Feb 16 PHP
php使用event扩展的io复用测试的示例
Oct 20 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 远程关机实现代码
2009/11/10 PHP
php 中英文语言转换类代码
2011/08/11 PHP
php获取网页中图片、DIV内容的简单方法
2014/06/19 PHP
php mysqli查询语句返回值类型实例分析
2016/06/29 PHP
PHP中set_include_path()函数相关用法分析
2016/07/18 PHP
php 获取文件行数的方法总结
2016/10/11 PHP
详解PHP中的序列化、反序列化操作
2017/03/21 PHP
PHP对象的浅复制与深复制的实例详解
2017/10/26 PHP
身份证号码前六位所代表的省,市,区, 以及地区编码下载
2007/04/12 Javascript
js 表格隔行颜色
2009/12/02 Javascript
关于js中window.location.href,location.href,parent.location.href,top.location.href的用法与区别
2010/10/18 Javascript
jquery中获取select选中值的代码
2011/06/27 Javascript
为什么要在引入的css或者js文件后面加参数的详细讲解
2013/05/03 Javascript
JS防止用户多次提交的简单代码
2013/08/01 Javascript
js操作输入框提示信息且响应鼠标事件
2014/03/25 Javascript
10分钟掌握XML、JSON及其解析
2020/12/06 Javascript
原生JS中slice()方法和splice()区别
2017/03/06 Javascript
详解webpack进阶之loader篇
2017/08/23 Javascript
vee-validate vue 2.0自定义表单验证的实例
2018/08/28 Javascript
一些Python中的二维数组的操作方法
2015/05/02 Python
解决python升级引起的pip执行错误的问题
2018/06/12 Python
python TKinter获取文本框内容的方法
2018/10/11 Python
Django1.11配合uni-app发起微信支付的实现
2019/10/12 Python
Pyqt5自适应布局实例
2019/12/13 Python
Python内置数据类型list各方法的性能测试过程解析
2020/01/07 Python
Python如何向SQLServer存储二进制图片
2020/06/08 Python
英国最大的老式糖果店:A Quarter Of
2017/04/08 全球购物
澳大利亚便宜隐形眼镜购买网站:QUICKLENS Australia
2018/10/06 全球购物
厨房工作人员岗位职责
2013/11/15 职场文书
一位农村小子的自荐信
2014/04/07 职场文书
公司总经理任命书
2014/06/05 职场文书
神农溪导游词
2015/02/11 职场文书
2015年工商所工作总结
2015/05/21 职场文书
转变工作作风心得体会
2016/01/23 职场文书
恶魔之树最顶端的三颗果实 震震果实上榜,第一可以制造岩浆
2022/03/18 日漫
Python matplotlib 利用随机函数生成变化图形
2022/04/26 Python