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 相关文章推荐
dede3.1分页文字采集过滤规则详说(图文教程)续二
Apr 03 PHP
php输出表格的实现代码(修正版)
Dec 29 PHP
sql注入与转义的php函数代码
Jun 17 PHP
php中require和require_once的区别说明
Feb 27 PHP
在Linux系统下一键重新安装WordPress的脚本示例
Jun 30 PHP
WordPress开发中的get_post_custom()函数使用解析
Jan 04 PHP
Yii使用smsto短信接口的函数demo示例
Jul 13 PHP
magento后台无法登录解决办法的两种方法
Dec 09 PHP
Yii CFileCache 获取不到值的原因分析
Feb 08 PHP
PHP DB 数据库连接类定义与用法示例
Mar 11 PHP
laravel 获取某个查询的查询SQL语句方法
Oct 12 PHP
PHP Swoole异步读取、写入文件操作示例
Oct 24 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
DC的38部超级英雄动画电影
2020/03/03 欧美动漫
php文字水印和php图片水印实现代码(二种加水印方法)
2013/12/25 PHP
Laravel 5框架学习之向视图传送数据(进阶篇)
2015/04/08 PHP
PHP实现基于mysqli的Model基类完整实例
2016/04/08 PHP
TP5框架页面跳转样式操作示例
2020/04/05 PHP
基于jQuery实现的百度导航li拖放排列效果,即时更新数据库
2012/07/31 Javascript
javascript中创建对象的几种方法总结
2013/11/01 Javascript
extjs_02_grid显示本地数据、显示跨域数据
2014/06/23 Javascript
jquery中$(#form :input)与$(#form input)的区别
2014/08/18 Javascript
JavaScript fontcolor方法入门实例(按照指定的颜色来显示字符串)
2014/10/17 Javascript
浅谈jQuery中对象遍历.eq().first().last().slice()方法
2014/11/26 Javascript
基于JQuery制作可编辑的表格特效
2014/12/23 Javascript
js使用cookie记录用户名的方法
2015/11/26 Javascript
javascript实现在网页中运行本地程序的方法
2016/02/03 Javascript
js弹出窗口简单实现代码
2017/03/22 Javascript
vue项目上传Github预览的实现示例
2018/11/06 Javascript
详解Vue中组件传值的多重实现方式
2019/08/16 Javascript
JS数组的高级使用方法示例小结
2020/03/14 Javascript
ES6中的类(Class)示例详解
2020/12/09 Javascript
Vue 实现一个简单的鼠标拖拽滚动效果插件
2020/12/10 Vue.js
绘制微信小程序验证码功能的实例代码
2021/01/05 Javascript
Python实现的简单模板引擎功能示例
2017/09/02 Python
python3判断url链接是否为404的方法
2018/08/10 Python
Python中修改字符串的四种方法
2018/11/02 Python
PyQt5实现从主窗口打开子窗口的方法
2019/06/19 Python
python 随机生成10位数密码的实现代码
2019/06/27 Python
python set内置函数的具体使用
2019/07/02 Python
Python下利用BeautifulSoup解析HTML的实现
2020/01/17 Python
Python3监控windows,linux系统的CPU、硬盘、内存使用率和各个端口的开启情况详细代码实例
2020/03/18 Python
Html5 canvas实现粒子时钟的示例代码
2018/09/06 HTML / CSS
全球游戏Keys和卡片市场:GamesDeal
2018/03/28 全球购物
营业员实习自我鉴定
2013/12/07 职场文书
面包店的创业计划书范文
2014/01/16 职场文书
售后服务经理岗位职责范本
2014/02/22 职场文书
作风建设年活动实施方案
2014/10/24 职场文书
导游词之扬州大明寺
2019/10/09 职场文书