代码演示

没什么可说的直接看代码

<?php
namespace app\controller;
class Category
{
//模拟假数据
protected static function arr()
{
$rows = [
[
'id' => '1',
'name' => '一级菜单',
'pid' => '0',
'path' => '0',
],
[
'id' => '2',
'name' => '二级菜单',
'pid' => '0',
'path' => '0',
],
[
'id' => '3',
'name' => '一级菜单-1',
'pid' => '1',
'path' => '0-1',
],
[
'id' => '4',
'name' => '二级菜单-1',
'pid' => '2',
'path' => '0-2',
],
[
'id' => '5',
'name' => '一级菜单-1-1',
'pid' => '3',
'path' => '0-1-3',
],
[
'id' => '6',
'name' => '二级菜单-1-1',
'pid' => '4',
'path' => '0-2-4',
],
[
'id' => '7',
'name' => '二级菜单-1-2',
'pid' => '4',
'path' => '0-2-4',
],
[
'id' => '8',
'name' => '三级菜单',
'pid' => '0',
'path' => '0',
],
[
'id' => '9',
'name' => '二级菜单-1-3',
'pid' => '4',
'path' => '0-2-4-6',
],
[
'id' => '10',
'name' => '三级菜单-1',
'pid' => '8',
'path' => '0-8',
],
[
'id' => '11',
'name' => '一级菜单-1-4',
'pid' => '5',
'path' => '0-8',
],
];
return $rows;
} public function index()
{
//获取从第0级下的所有分类(pid==0)
$list = $this->build_tree(0);
return json($list);
} /**
* 递归子级
* @param $list
* @param $id
* @return array
*/
public function findChild($list, $id)
{
$child = [];
foreach ($list as $key => $item) {
//如果pid等于传进来
if ($item['pid'] == $id) {
$child[] = $item;
}
}
return $child;
}
/**
* 获取当前级别的子级
* @param $root_id /第几层
* @return null
*/
public function build_tree($root_id)
{
//获取假数据
$list = $this->arr();
//查找指定级数
$tree = $this->findChild($list, $root_id);
if (empty($tree)) {
return null;
}
//遍历获取到的层级得到下级分类
foreach ($tree as $key => $item) {
//递归调用自己 查找每个元素下的分类
$child = $this->build_tree($item['id']);
//如果有子类就放入数组中
if ($child != null){
$tree[$key]['child'] = $child;
}
}
return $tree;
}
}

预览结果

ThinkPHP无限级分类(递归)的更多相关文章

  1. C#无限级分类递归显示示例

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="RoleDemo20150305 ...

  2. PHP无限级分类-递归(不推荐)

    [http://www.helloweba.com/view-blog-204.html] 在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性.那么PHP是如何实现无限级分类的呢? ...

  3. ThinkPHP无限级分类

    <?php // +---------------------------------------------------------------------- // | ThinkPHP [ ...

  4. 使用Python3.7+Django2.0.4配合vue.js2.0的组件递归来实现无限级分类(递归层级结构)

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_133 所谓的无限极分类是啥?其实简单点说就是一个人类可以繁衍出多个后代,然后一个后代又可以分另外多个后代这样无限繁衍下去(可以想象 ...

  5. thinkphp 无限级分类的思想 分析

    $list=$cate->field("id,name,pid,path,concat(path,'-',id) as bpath")->order('bpath')- ...

  6. PHP 无限级分类(递归)

    网上有很多,这是我自己做测试用的$arr = array( array('id'=>1,'name'=>'电脑','pid'=>0), array('id'=>2,'name' ...

  7. thinkphp框架中使用递归实现无限级分类

    无限级分类在我们开发中显得举足轻重,会经常被人问到,而一般会用递归的方法来实现,但是递归又会难倒一批人.今天博主分享的这个稍微有点基础的phper都能学会,希望大家能喜欢. 一.先建立对应的数据库和表 ...

  8. thinkphp中如何实现无限级分类?

    thinkphp中如何实现无限级分类? 一.总结 1.数据表设计+递归算法 二.php实现无限级分类实例总结 1.数据库数据如下: 2.任务需求:给一个id,求自己和所有父亲. 3.实现代码如下:th ...

  9. PHP无限级分类的实现(不使用递归)

    无限级分类在开发中经常使用,例如:部门结构.文章分类.无限级分类的难点在于“输出”和“查询”,例如 将文章分类输出为<ul>列表形式: 查找分类A下面所有分类包含的文章. 1.实现原理 在 ...

随机推荐

  1. 《C++编程思想》部分章节学习笔记整理

    简介 此笔记为<C++编程思想>中部分章节的学习笔记,主要是第15章--多态性和虚函数 的学习笔记,此外还有少量其他章节的内容. 目录 文档:<C++编程思想>

  2. mysql索引性能验证,高性能的索引策略

    索引性能验证 1.无索引列的查询 在where条件中查询没有添加索引的列,性能会比较差.我们可以先在sqlyog中打开表t_user的数据,然后复制一个名字出来进行查询. /*无索引列的查询,索引不会 ...

  3. mooc人大单元测试3

    @font-face { font-family: Wingdings } @font-face { font-family: 宋体 } @font-face { font-family: " ...

  4. php swoole 和 websocket的初次碰撞

    php swoole 扩展仿佛为php开发打开了一扇窗户 阅读文档 https://wiki.swoole.com php workman和swoole原来是两个东东 swoole的使用范围更广,能做 ...

  5. 路由器逆向分析------binwalk工具的安装

    本文博客链接:http://blog.csdn.net/qq1084283172/article/details/65441110 一.binwalk工具运行支持的平台 binwalk工具安装支持的平 ...

  6. 【python】【补】Leetcode每日一题-合并两个有序数组

    [python]Leetcode每日一题-合并两个有序数组 [题目描述] 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组 ...

  7. thinkphp中常用到的sql操作

    1.清空某表数据: $sql = 'truncate table table_name'; Db::execute($sql );

  8. CCNA 第二章 以太网回顾

    1:半双工和全双工 (1):半双工:类似于单车道: (2):全双工:类似是双向多车道: 2:思科三层模型 (1): (2):核心层.集散层(汇聚层).接入层各功能: 1:核心层:大量数据快速交换:不要 ...

  9. vue 2.9.6升级到最新版本

    在看文档https://cli.vuejs.org/zh/guide/installation.html中,按步骤升级vue: 于是就先通过 npm uninstall vue-cli -g卸载vue ...

  10. Python JWT 介绍

    Python JWT 介绍 目录 Python JWT 介绍 1. JWT 介绍 2. JWT 创建 token 2.1 JWT 生成原理 2.2 JWT 校验 token 原理 3. 代码实现 4. ...