无限极分类

简介: 简单的个人无限极分类
+关注继续查看
$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);

_

相关文章
|
10月前
|
缓存 前端开发 应用服务中间件
Nginx开启Gzip压缩功能(附详细解释)+测试是否开启了压缩
Nginx实现资源压缩的原理是通过ngx_http_gzip_module模块拦截请求,并对需要做gzip的类型做gzip,ngx_http_gzip_module是Nginx默认集成的,不需要重新编译,直接开启即可。
1526 1
Nginx开启Gzip压缩功能(附详细解释)+测试是否开启了压缩
|
10月前
|
存储 缓存 NoSQL
【SpringBoot】50、SpringBoot为Redis的key加上前缀
我们在实际的项目应用中,Redis一般都是用来缓存热点数据,一台服务器可能部署了多个应用,应用直接的 Redis 数据需要加上前缀区分开来,我们可以使用序列化的方式,统一为所有的 key 加上前缀
781 0
|
11月前
|
Java Windows
史上最全的 IDEA Debug 调试技巧(超详细!建议收藏!)(1)
Debug用来追踪代码的运行流程,通常在程序运行过程中出现异常,启用Debug模式可以分析定位异常发生的位置,以及在运行过程中参数的变化。通常我们也可以启用Debug模式来跟踪代码的运行流程去学习三方框架的源码。
791 0
史上最全的 IDEA Debug 调试技巧(超详细!建议收藏!)(1)
|
Java 数据库
Springboot 根据数据库表自动生成实体类和Mapper,只需三步
Springboot 根据数据库表自动生成实体类和Mapper,只需三步
1971 0
Springboot 根据数据库表自动生成实体类和Mapper,只需三步
|
Java 关系型数据库 MySQL
springboot获取mybatis插入自增id(mysql)
springboot获取mybatis插入自增id(mysql)
324 0
springboot获取mybatis插入自增id(mysql)
|
Java
如何修改HttpServletRequest的Headers?
HttpServletRequest java
2236 0
|
新零售 小程序 机器人
解决方案应用实例 |泡泡玛特x阿里云,寻求中国潮玩领域的新突破
通过阿里云数据中台,泡泡玛特一方面实现了降本提效,提高了营销的精准性和效率,另一方面实现了数字化推动业务创新和增长,运用数据挖掘潜在用户,并和天猫合作进行新品开发。
2385 0
解决方案应用实例 |泡泡玛特x阿里云,寻求中国潮玩领域的新突破
|
设计模式 弹性计算 人工智能
殷浩详解DDD:领域层设计规范
在一个DDD架构设计中,领域层的设计合理性会直接影响整个架构的代码结构以及应用层、基础设施层的设计。但是领域层设计又是有挑战的任务,特别是在一个业务逻辑相对复杂应用中,每一个业务规则是应该放在Entity、ValueObject 还是 DomainService是值得用心思考的,既要避免未来的扩展性差,又要确保不会过度设计导致复杂性。今天我用一个相对轻松易懂的领域做一个案例演示,但在实际业务应用中,无论是交易、营销还是互动,都可以用类似的逻辑来实现。
殷浩详解DDD:领域层设计规范
|
Java 中间件 测试技术
殷浩详解DDD系列 第二讲 - 应用架构
# 第二讲 - 应用架构 架构这个词源于英文里的“Architecture“,源头是土木工程里的“建筑”和“结构”,而架构里的”架“同时又包含了”架子“(scaffolding)的含义,意指能快速搭建起来的固定结构。而今天的应用架构,意指软件系统中**固定不变**的代码结构、设计模式、规范和组件间的通信方式。在应用开发中架构之所以是最重要的第一步,因为一个好的架构能让系统安全、稳定、快速迭代
21834 1
|
Java fastjson Spring
精通SpringBoot——第三篇:详解WebMvcConfigurer接口
精通spring boot 之WebMvcConfigurer接口的实现
73293 0
相关产品
机器翻译
推荐文章
更多