无限极分类

简介: 简单的个人无限极分类
$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 Shell 网络安全
springboot 远程调用shell脚本,环境为windows
本文是博主学习SpringBoot的记录,希望对大家有所帮助。
1128 0
springboot 远程调用shell脚本,环境为windows
|
安全 Java 测试技术
Netflix 开源用于 Spring Boot的 GraphQL 服务框架DGS
Netflix 公司着力开发的 Domain Graph Service(DGS)框架现已正式成为开源项目。DGS 框架简化了针对独立与联合 GraphQL 服务的 GraphQL 实现。而在高强度的现实锤炼之后,这套框架也变得愈发稳定强健。
Netflix 开源用于 Spring Boot的 GraphQL 服务框架DGS
|
Java
JAVA解压tar,可以使用javatar
JAVA解压tar,可以使用javatar
409 0
|
关系型数据库 Nacos 数据库
如何使用Docker部署Nacos服务?Nacos Docker 快速部署指南: 一站式部署与配置教程
如何使用Docker部署Nacos服务?Nacos Docker 快速部署指南: 一站式部署与配置教程
1496 1
|
XML JSON 前端开发
Spring MVC @RequestBody @ResponseBody 序列化反序列化实现
前言 Spring MVC 中,标注了 @RequestBody 注解的 Controller 方法参数可以用来接收请求体,标注了 @ResponseBody 注解的 Controller 方法则会将返回值作为响应体。
626 0
Spring MVC @RequestBody @ResponseBody 序列化反序列化实现
|
存储 JSON 前端开发
Spring 参数校验最佳实践及原理解析
背景 在参数校验框架出现前,业务逻辑代码中经常会充斥着参数校验的代码,将参数校验视为业务逻辑的一部分不失为是一种较为灵活的做法,然而对于一些通用的校验,如字符串不能为空、数值范围限制等,如果还放在业务逻辑中,则会导致业务代码出现大量的重复,为了避免这种问题,Java 社区提出了 JSR-303 规范,用于对 bean 进行校验。
570 0
Spring 参数校验最佳实践及原理解析
|
Java
SpringBoot: 启动Banner在线生成工具
SpringBoot: 启动Banner在线生成工具
3859 0
SpringBoot: 启动Banner在线生成工具
YL.
|
Android开发
Gradle-----buildSrc
在Android项目中,使用buildSrc抽象命令式逻辑
YL.
831 0
Gradle-----buildSrc
|
XML Java 数据库连接
《SpringBoot篇》12.@Valid与@Validated的区别
《SpringBoot篇》12.@Valid与@Validated的区别
543 0
《SpringBoot篇》12.@Valid与@Validated的区别

热门文章

最新文章