开发者社区> 堕落无心> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

无限极分类

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

_

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
文本分类资料综述总结
文本分类资料综述总结
18 0
【文本分析】新闻分类
新闻分类是文本挖掘领域较为常见的场景。目前很多媒体或是内容生产商对于新闻这种文本的分类常常采用人肉打标的方式,消耗了大量的人力资源。本文尝试通过智能的文本挖掘算法对于新闻文本进行分类。无需任何人肉打标,完全由机器智能化实现。<br />数据源:网络爬取新闻数据<br />数据大小:261 KB<br />字段数量:3<br />使用组件:过滤与映射,SQL脚本,读数据表,增加序号列,类型转换<br />
4342 0
分类算法总结
目前看到的比较全面的分类算法,总结的还不错.       主要分类方法介绍解决分类问题的方法很多[40-42] ,单一的分类方法主要包括:决策树、贝叶斯、人工神经网络、K-近邻、支持向量机和基于关联规则的分类等;另外还有用于组合单一分类方法的集成学习算法,如Bagging和Boosting等。
854 0
设计模式分类
  一、创建型模式[静态]      1.1单件模式            1.2工厂方法模式       1.3抽象工厂模式        1.4模板方法模式         1.
795 0
归并分类
基本方法:  给定一个含有n个元素(又叫关键字)的集合,如果要把它们按一定的次序分类(本节中自始至终假定按非递减分类),最直接的方法就是插入法。对A(1:n)中元素作插入分类的基本思想是:for(j=2;n;++j){将A[j]放到已分类集合A[1:j-1]的正确位置上};从中可以看出,为了插入A(j),有可能移动A(1:j-1)中的所有元素,因此可以预计该算法在时间特性上不会太好,算法具体描述如下: void InsertionSort(elemType a[],int n) { //将A(l:n)中的元素按非递减分类。
545 0
设计模式分类
     在《设计模式》这本书中列举并描述了23种设计模式,分为创建型模式、结构型模式和行为型模式。另外,近来这一清单又增加了一些类别,例如,并发型模式、线程池模式、Java EE企业技术的多层应用程序上的模式等。
636 0
+关注
堕落无心
无知的小白
10
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载