php 无限极分类树形图,ThinkPhp 实现 无限极分类及树状结构 附加使用例子
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 实现 无限极分类及树状结构 附加使用例子相关推荐
- Stream流实现Tree树状结构无限递归
Stream流实现Tree树状结构无限递归 场景:在使用mybatis plus操作多层数据格式,多层遍利操作影响数据查询效率 代码 例子:需要返回给前端多级菜单 省(直辖市)/市/区(县) /*** ...
- 下拉菜单实现树状结构_树形图:复杂层次结构的数据可视化
树形图:复杂层次结构的数据可视化 作者:Page Laubheimer[1] 树形图是一种复杂的,基于区域的数据可视化,用于复杂层次结构的数据,可能难以精确解释.在许多情况下,最好使用更简单的可视化效 ...
- python 树状图代码_Python 无限级分类树状结构生成算法 「实用代码」
def generate_tree(source, parent): tree = [] for item in source: if item["parent"] == pare ...
- 无限极分类不知pid_PHP实现无限极分类
导读:说到无限极分类,这个在程序中是常见的一个功能点了.实现的方式也有很多种,今天着重分享一下涉及到数据库的无线分类,可以使用递归处理,也可以使用循环查询数据库处理.但是我们考虑到数据库的性能问题,都 ...
- php树形结构变成线性结构,php把数据集转换成树状结构,无限极分类生成树状 – CSDN博客...
直接上代码,在onethink里面使用的转换树状结构/** * 把返回的数据集转换成Tree * @param array $list 要转换的数据集 * @param string $pid par ...
- PHP和MySQL处理树状、分级、无限分类、分层数据的方法
文章标题中的多个词语表达的其实是一个意思,就是递归分类数据,分级数据非常类似数据结构中的树状结构,即每个节点有自己的孩子节点,孩子结点本身也是父亲节点.这是一个递归.分层形式.可以称之为树形层级数据. ...
- php和mysql处理树状_分级_无限分类_分层数据的方法_PHP和MySQL处理树状、分级、无限分类、分层数据的方法...
文章标题中的多个词语表达的其实是一个意思,就是递归分类数据,分级数据非常类似数据结构中的树状结构,即每个节点有自己的孩子节点,孩子结点本身也是父亲节点.这是一个递归.分层形式.可以称之为树形层级数据. ...
- 树状选择框测试用例_分类树测试用例设计工具:CTE XL
1.1工具安装 CTE XL是一款免费的分类树测试用例设计工具,安装过程很简单,下载好安装程序后,运行安装程序:如图 点击下一步: 点击下一步: 是否创建桌面按钮: 安装: 安装完成后,需要注册才能获 ...
- php 递归栏目名叠加,thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法,thinkphp递归...
thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法,thinkphp递归 本文实例讲述了thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法.分享给大家供大家参考,具体如下: 这 ...
- 无限极分类php简单,创建无限极分类树型结构的简单方法
先上效果图 顶级分类其实就是一级分类,二级分类也叫作一级分类的子分类,在这个基础上,子分类还可以拥有子分类,这样就构成了无限极分类. 接下来看具体实现的代码: 一.在控制器中按字段查询,查询出所有分类 ...
最新文章
- 【推荐】极限编程的十二大原则——小版本
- 【问题记录】解决npm 报错This dependency was not found: A complete log of this run can be found in:
- arduino i2c 如何写16位寄存器_arduino入门
- mysql 实例名_不为人知的MySQL高可用复制管理工具——Orchestrator简介
- python 百度搜索结果_Python洗涤百度搜索结果
- error C2065: 'assert' : undeclared identifier
- Linux的shell中echo改变输出显示样式
- Modelsim SE 下载安装、注册详细教程
- 使用机器学习预测股价
- Linux 闹钟(alarm)
- Exp6 信息搜集与漏洞扫描 20164302 王一帆
- moment获取本月、上个月、近三个月时间段
- GetDC 与 释放DC
- storm风暴英雄 tempo_暴雪发布2018《风暴英雄》HGC战队实力排行榜
- 《软技能 代码之外的生存指南》
- (LattePanda)拿铁熊猫python 简单控制led闪烁(使用python 进行硬件开发)
- 虚拟现实和增强现实技术_增强现实和虚拟现实在NBA中的作用
- 【编译器学习】EBNF扩展巴科斯范式学习总结
- nginx--如何基于rpm包进行离线安装及配置(Linux)
- 学习bootstra前端框架
热门文章
- excel中查找两列数据中的重复数据
- 恒流源驱动电路 随笔一
- 2019寒假·纪中记Day0-Day3
- stm32f401 边沿捕获_stm32f401ret6例程 嵌入式1 STM32F401开发实战1—LED闪烁和串口收发数据 - 硬件设备 - 服务器之家...
- 在iPhone/iPad/iPod touch Home主屏幕界面加快捷方式
- 用html设计logo,终于知道网页logo设计要点
- 对话腾讯17级员工张正友博士:有关梦想、成长和焦虑
- centos有道linux安装,centos7安装有道词典(不能发音和取词)
- 如何使用cmd进入打印机选项_命令行方式添加打印机
- matlab学习笔记 repmat函数与kron函数之区别