平时难免会遇到无限极点分类的问题,因为效率、逻辑等问题总是让这类问题更加尖锐。今天,基于yii2框架,我们以列infinity为例简单地处理这个问题。
首先,我们有一个列数据表树。
表格结构如下(原文有图片)。
看起来表格结构很简单。
我们插入几条测试数据。
INSERT INTO `tree` (`id `、` parent_id `、` name`) VALUES (1,0,' A ')、(2,0,' B ')、(3,1,' A ')、(4,3,' aa ')、(5,2,' B ')、(6,4,' AAA ');树形结构大致如下。
|A | - a | - aa | - aaa |B | - b
这正是我们需要的数据结构。让我们看看如何处理它以获得所需的结果。
如前所述,它基于yii2,因此我们的写作遵循面向对象的规则。
类树{//访问索引查看树结构公共函数动作索引(){ $ data=self :3360 gettree();//为了测试方便,我们以json格式输出 yii :3360 $ app-response-format= yii 33603360 format _ JSON。返回$数据;}//获取树公共静态函数gettree(){//这里我们直接获取所有数据,然后通过程序进行处理。//无限极点分类最忌讳的就是对数据库进行逐层操作,容易造成内存溢出。//计算机崩溃的结果是$ data=static :3360 find()-all();return self : _ generateTree($ data);}//生成树私有静态函数_ generatetree ($ data,$ PID=0){ $ tree=[];if($ data is _ array($ data)){ foreach($ data as $ v){ if($ v[' parent _ id ']==$ PID){ $ tree[]=[' id '=$v['id'],' name'=$v['name'],' parent_id'=$v['parent_id'],' children '=self : _ generateTree($ data,$ v[' id '],];} } }返回$ tree}}我们来访问树/索引,渲染如下。
这样就可以看到非常清晰的树形结构图,这也是我们最终需要的。
关于PHP Infinitus分类的案例教程会给大家介绍这么多,希望对大家有所帮助!