PS: 最下方有PHP文字,直接copy使用

FOR examle: 例子

$list = Db::name('user')->field('name,id,pid')->select();

$array =Category::toLayer($list);

结果

image.png

Php 代码文件

class Category {

//一维数组

static public function toLevel($cate, $delimiter = '———', $parent_id = 0, $level = 0) {

$arr = array();

foreach ($cate as $v) {

if ($v['parent_id'] == $parent_id) {

$v['level'] = $level + 1;

$v['delimiter'] = str_repeat($delimiter, $level);

$arr[] = $v;

$arr = array_merge($arr, self::toLevel($cate, $delimiter, $v['id'], $v['level']));

}

}

return $arr;

}

/**

* 组成多维数组

* @param $cate 将要被转换为树形的

* @param string $name 子节点名字 默认 child

* @param int $pid 父类ID, 第一级的 pid 默认为0,根据情况自己更改

* @return array

*/

static public function toLayer($cate, $name = 'child', $pid = 0){

$arr = array();

foreach ($cate as $v) {

if ($v['pid'] == $pid) {

$v[$name] = self::toLayer($cate, $name, $v['id']);

$arr[] = $v;

}

}

return $arr;

}

//一维数组(同模型)(model = tablename相同),删除其他模型的分类

static public function getLevelOfModel($cate, $tablename = 'article') {

$arr = array();

foreach ($cate as $v) {

if ($v['tablename'] == $tablename) {

$arr[] = $v;

}

}

return $arr;

}

//一维数组(同模型)(modelid),删除其他模型的分类

static public function getLevelOfModelId($cate, $modelid = 0) {

$arr = array();

foreach ($cate as $v) {

if ($v['modelid'] == $modelid) {

$arr[] = $v;

}

}

return $arr;

}

//传递一个子分类ID返回他的所有父级分类

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返回他的同级分类

static public function getSameCate($cate, $id) {

$arr = array();

$self = self::getSelf($cate, $id);

if (empty($self)) {

return $arr;

}

foreach ($cate as $v) {

if ($v['id'] == $self['pid']) {

$arr[] = $v;

}

}

return $arr;

}

//判断分类是否有子分类,返回false,true

static public function hasChild($cate, $id) {

$arr = false;

foreach ($cate as $v) {

if ($v['pid'] == $id) {

$arr = true;

return $arr;

}

}

return $arr;

}

//传递一个父级分类ID返回所有子分类ID

/**

*@param $cate 全部分类数组

*@param $pid 父级ID

*@param $flag 是否包括父级自己的ID,默认不包括

**/

static public function getChildsId($cate, $pid, $flag = 0) {

$arr = array();

if ($flag) {

$arr[] = $pid;

}

foreach ($cate as $v) {

if ($v['pid'] == $pid) {

$arr[] = $v['id'];

$arr = array_merge($arr , self::getChildsId($cate, $v['id']));

}

}

return $arr;

}

//传递一个父级分类ID返回所有子级分类

static public function getChilds($cate, $pid) {

$arr = array();

foreach ($cate as $v) {

if ($v['pid'] == $pid) {

$arr[] = $v;

$arr = array_merge($arr, self::getChilds($cate, $v['id']));

}

}

return $arr;

}

//传递一个分类ID返回该分类相当信息

static public function getSelf($cate, $id) {

$arr = array();

foreach ($cate as $v) {

if ($v['id'] == $id) {

$arr = $v;

return $arr;

}

}

return $arr;

}

//传递一个分类ID返回该分类相当信息

static public function getSelfByEName($cate, $ename) {

$arr = array();

foreach ($cate as $v) {

if ($v['ename'] == $ename) {

$arr = $v;

return $arr;

}

}

return $arr;

}

}

php 无限极分类树形图,ThinkPhp 实现 无限极分类及树状结构 附加使用例子相关推荐

  1. Stream流实现Tree树状结构无限递归

    Stream流实现Tree树状结构无限递归 场景:在使用mybatis plus操作多层数据格式,多层遍利操作影响数据查询效率 代码 例子:需要返回给前端多级菜单 省(直辖市)/市/区(县) /*** ...

  2. 下拉菜单实现树状结构_树形图:复杂层次结构的数据可视化

    树形图:复杂层次结构的数据可视化 作者:Page Laubheimer[1] 树形图是一种复杂的,基于区域的数据可视化,用于复杂层次结构的数据,可能难以精确解释.在许多情况下,最好使用更简单的可视化效 ...

  3. python 树状图代码_Python 无限级分类树状结构生成算法 「实用代码」

    def generate_tree(source, parent): tree = [] for item in source: if item["parent"] == pare ...

  4. 无限极分类不知pid_PHP实现无限极分类

    导读:说到无限极分类,这个在程序中是常见的一个功能点了.实现的方式也有很多种,今天着重分享一下涉及到数据库的无线分类,可以使用递归处理,也可以使用循环查询数据库处理.但是我们考虑到数据库的性能问题,都 ...

  5. php树形结构变成线性结构,php把数据集转换成树状结构,无限极分类生成树状 – CSDN博客...

    直接上代码,在onethink里面使用的转换树状结构/** * 把返回的数据集转换成Tree * @param array $list 要转换的数据集 * @param string $pid par ...

  6. PHP和MySQL处理树状、分级、无限分类、分层数据的方法

    文章标题中的多个词语表达的其实是一个意思,就是递归分类数据,分级数据非常类似数据结构中的树状结构,即每个节点有自己的孩子节点,孩子结点本身也是父亲节点.这是一个递归.分层形式.可以称之为树形层级数据. ...

  7. php和mysql处理树状_分级_无限分类_分层数据的方法_PHP和MySQL处理树状、分级、无限分类、分层数据的方法...

    文章标题中的多个词语表达的其实是一个意思,就是递归分类数据,分级数据非常类似数据结构中的树状结构,即每个节点有自己的孩子节点,孩子结点本身也是父亲节点.这是一个递归.分层形式.可以称之为树形层级数据. ...

  8. 树状选择框测试用例_分类树测试用例设计工具:CTE XL

    1.1工具安装 CTE XL是一款免费的分类树测试用例设计工具,安装过程很简单,下载好安装程序后,运行安装程序:如图 点击下一步: 点击下一步: 是否创建桌面按钮: 安装: 安装完成后,需要注册才能获 ...

  9. php 递归栏目名叠加,thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法,thinkphp递归...

    thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法,thinkphp递归 本文实例讲述了thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法.分享给大家供大家参考,具体如下: 这 ...

  10. 无限极分类php简单,创建无限极分类树型结构的简单方法

    先上效果图 顶级分类其实就是一级分类,二级分类也叫作一级分类的子分类,在这个基础上,子分类还可以拥有子分类,这样就构成了无限极分类. 接下来看具体实现的代码: 一.在控制器中按字段查询,查询出所有分类 ...

最新文章

  1. 【推荐】极限编程的十二大原则——小版本
  2. 【问题记录】解决npm 报错This dependency was not found: A complete log of this run can be found in:
  3. arduino i2c 如何写16位寄存器_arduino入门
  4. mysql 实例名_不为人知的MySQL高可用复制管理工具——Orchestrator简介
  5. python 百度搜索结果_Python洗涤百度搜索结果
  6. error C2065: 'assert' : undeclared identifier
  7. Linux的shell中echo改变输出显示样式
  8. Modelsim SE 下载安装、注册详细教程
  9. 使用机器学习预测股价
  10. Linux 闹钟(alarm)
  11. Exp6 信息搜集与漏洞扫描 20164302 王一帆
  12. moment获取本月、上个月、近三个月时间段
  13. GetDC 与 释放DC
  14. storm风暴英雄 tempo_暴雪发布2018《风暴英雄》HGC战队实力排行榜
  15. 《软技能 代码之外的生存指南》
  16. (LattePanda)拿铁熊猫python 简单控制led闪烁(使用python 进行硬件开发)
  17. 虚拟现实和增强现实技术_增强现实和虚拟现实在NBA中的作用
  18. 【编译器学习】EBNF扩展巴科斯范式学习总结
  19. nginx--如何基于rpm包进行离线安装及配置(Linux)
  20. 学习bootstra前端框架

热门文章

  1. excel中查找两列数据中的重复数据
  2. 恒流源驱动电路 随笔一
  3. 2019寒假·纪中记Day0-Day3
  4. stm32f401 边沿捕获_stm32f401ret6例程 嵌入式1 STM32F401开发实战1—LED闪烁和串口收发数据 - 硬件设备 - 服务器之家...
  5. 在iPhone/iPad/iPod touch Home主屏幕界面加快捷方式
  6. 用html设计logo,终于知道网页logo设计要点
  7. 对话腾讯17级员工张正友博士:有关梦想、成长和焦虑
  8. centos有道linux安装,centos7安装有道词典(不能发音和取词)
  9. 如何使用cmd进入打印机选项_命令行方式添加打印机
  10. matlab学习笔记 repmat函数与kron函数之区别