代码演示

没什么可说的直接看代码

<?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. 在Android、iOS、Web多平台使用AppGallery Connect性能管理服务

    性能管理(App Performance Management,简称APM)是华为应用市场AppGallery Connect(简称AGC)质量系列服务中的其中一项,可以提供分钟级应用性能监控能力,支 ...

  2. 小白学PID-以大疆M3508、M2006为例

    前言: 最近用到了大疆的直流无刷(BLDC)减速电机M3508和M2006.做RoboMaster比赛的同学应该对它们很熟悉,这两款电机质量都不错,配套电调C620.C610功能强大,应用场景广泛.当 ...

  3. Smith Numbers(分解质因数)

    Smith Numbers Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 14173   Accepted: 4838 De ...

  4. Unity基础-脚本生命周期

    理解Unity脚本的生命周期对游戏开发很重要,这篇文章对生命周期做一个记录和总结.Unity的脚本生命周期(消息),也就是在脚本运行时,自动并且按顺序执行的一系列函数.在unity官网中有对生命周期详 ...

  5. 1.8.8- textarea控件(文本域)

    如果需要大量的信息,就需要用到<textarea>标签,通过testarea控件可以轻松创建多行文本输入框,其基本语法如下: <textarea cols="每行的字数&q ...

  6. TP5 验证-内置规则

    系统内置的验证规则如下: 格式验证类 require 验证某个字段必须,例如: 'name'=>'require' number 或者 integer 验证某个字段的值是否为数字(采用filte ...

  7. 【JDK8】Java8 优雅的异步调用API CompletableFuture

    1.CompletableFuture是什么? CompletableFuture是JDK8的新特性之一,是异步调用相关的API,用于简化异步调用,提高异步调用的效率 2.CompletableFut ...

  8. hdu4118

    题意:       给你一颗无向带权树,每个定点上有一个人,问所有定点都不在自己位置上的最长路径总和是多少..   思路:       其实很简单,贪心的想下,既然要求全局最大,那么对于每一条边用的次 ...

  9. Windows核心编程笔记之错误处理

    0x01 GetLastError() 函数用于获取上一个操作的错误代码 #include <Windows.h> #include <iostream> using name ...

  10. C++ STL 思维导图,脑图,树形图。

    https://blog.csdn.net/weixin_41743247/article/details/90635931