无限极分类

简介: 简单的个人无限极分类
$arr = array(
            0=>[
                'id'=>1,
                'name'=>'科技',
                'pid'=>0,
            ],
            1=>[
                'id'=>2,
                'name'=>'人工智能',
                'pid'=>1,
            ],
            2=>[
                'id'=>3,
                'name'=>'美食',
                'pid'=>0
            ],
            3=>[
                'id'=>4,
                'name'=>'重庆小面',
                'pid'=>3
            ],
            4=>[
                'id'=>5,
                'name'=>'机器人',
                'pid'=>2
            ]
        );

public function  category($arr,$pid=0,$level=0){
        //定义一个静态变量,存储一个空数组,用静态变量,是因为静态变量不会被销毁,会保存之前保留的值,普通变量在函数结束时,会死亡,生长周期函数开始到函数结束,再次调用重新开始生长
        //保存一个空数组
        static $list=array();
        //通过遍历查找是否属于顶级父类,pid=0为顶级父类,
        foreach($arr as $value){
            //进行判断如果pid=0,那么为顶级父类,放入定义的空数组里
            if($value['pid']==$pid){
                //添加空格进行分层
                $arr['level']=$level;
                $list[]=$value;
                //递归点,调用自身,把顶级父类的主键id作为父类进行再调用循环,空格+1
                self::category($arr,$value['id'],$level+1);
            }
        }
        return $list;//递归出口
    }

$list = category($arr,0,0);

_

相关文章
|
安全 Java 应用服务中间件
组件漏洞修复---修改SpringBoot内置tomcat的版本号
安全反应Tomcat9.0.41存在安全漏洞,让将所有服务的Tomcat版本升级到9.0.44,我们都知道SpingBoot中是集成的有内置的Tomcat的,叫Embed-Tomcat,这个Tomcat和我们用于部署war包的Tomcat还是有有一些区别的,但是版本一直和Tomcat基本保持一致。
765 0
组件漏洞修复---修改SpringBoot内置tomcat的版本号
|
Java 数据库
Springboot 根据数据库表自动生成实体类和Mapper,只需三步
Springboot 根据数据库表自动生成实体类和Mapper,只需三步
3362 1
Springboot 根据数据库表自动生成实体类和Mapper,只需三步
|
Java
如何修改HttpServletRequest的Headers?
HttpServletRequest java
2734 0
|
9月前
|
数据库
代码自动生成工具实战-Cursor
之前看过github copilot 的代码生成能力。可以说解放了码农的双手,基础的代码完全可以来生成。可是后来它收费了。
169 0
|
druid Java 数据库连接
SringBoot整合Druid+Mybatisplus实现多数据源
SringBoot整合Druid+Mybatisplus实现多数据源
SringBoot整合Druid+Mybatisplus实现多数据源
Redisson 分布式锁的正确使用
你会正确使用分布式锁吗?
1693 0
Redisson 分布式锁的正确使用
|
缓存 Dubbo Java
Springboot 小巧简便的限流器使用 RateLimiter
Springboot 小巧简便的限流器使用 RateLimiter
320 0
Springboot 小巧简便的限流器使用 RateLimiter
|
算法 安全 Java
浅析五种最常用的Java加密算法,以后可以直接拿来用了
信息加密是现在几乎所有项目都需要用到的技术,身份认证、单点登陆、信息通讯、支付交易等场景中经常会需要用到加密算法,所谓加密算法,就是将原本的明文通过一系列算法操作变成密文。接下来就介绍一下目前比较常用的一些加密算法,本期不涉及算法底层,以应用介绍和代码展示为主。 如果只想了解原理,可跳过代码部分,代码可直接拿来使用。
1810 0
|
SQL 安全 Java
SpringBoot 整合SpringSecurity示例实现前后分离权限注解+JWT登录认证
SpringSecurity是一个用于Java 企业级应用程序的安全框架,主要包含用户认证和用户授权两个方面.相比较Shiro而言,Security功能更加的强大,它可以很容易地扩展以满足更多安全控制方面的需求,但也相对它的学习成本会更高,两种框架各有利弊.实际开发中还是要根据业务和项目的需求来决定使用哪一种.
SpringBoot 整合SpringSecurity示例实现前后分离权限注解+JWT登录认证
|
Java Windows
史上最全的 IDEA Debug 调试技巧(超详细!建议收藏!)(1)
Debug用来追踪代码的运行流程,通常在程序运行过程中出现异常,启用Debug模式可以分析定位异常发生的位置,以及在运行过程中参数的变化。通常我们也可以启用Debug模式来跟踪代码的运行流程去学习三方框架的源码。
1847 0
史上最全的 IDEA Debug 调试技巧(超详细!建议收藏!)(1)