当前位置: 首页 > 编程笔记 >

创建无限极分类树型结构的简单方法

章盛
2023-03-14
本文向大家介绍创建无限极分类树型结构的简单方法,包括了创建无限极分类树型结构的简单方法的使用技巧和注意事项,需要的朋友参考一下

先上效果图

顶级分类其实就是一级分类,二级分类也叫作一级分类的子分类,在这个基础上,子分类还可以拥有子分类,这样就构成了无限极分类。

接下来看具体实现的代码:

一、在控制器中按字段查询,查询出所有分类信息(id:该分类的ID值,cate_name:该分类的名称,pid:父ID,sorts:为显示标题顺序排序做准备,可不写。)

public function cate_display()
  {
    $cate = D('Cate'); 
    $field = array('id','cate_name','pid','sorts');
    $list = $cate->allCategory($field);
    $this->assign('list',$list);
    $this->display();
  }

二、模型中的代码

在对应控制器的模型中创建两个方法

1.查询所有分类信息,并调用生成分类树方法:

public function allCategory($field='*'){
     $data = $this->field($field)->select();
     return $this->tree($data);
   }

2.生成分类树(使用递归,传进去数据,以及pid[父类id],level[层数,用来控制显示的-数量]两个变量,初始值为零)

public function tree($data,$pid=0,$level=0){
    static $tree = array();
    foreach($data as $k=>$v){
      if($v['pid'] == $pid){
        $v['level'] = $level;
        $tree[]=$v;
        $this->tree($data,$v['id'],$level+1);
      }
    }
  
    return $tree;
  }

三、视图文件中的代码

<div class="form-group">
        <label for="pid" class="col-sm-2 control-label no-padding-right">上级菜单</label>
        <div class="col-sm-6">
          <select name="pid" style="width: 100%;">
            <option selected="selected" value="0">顶级菜单</option>
            <volist name="row" id="val"> 
              <option value="{$val.id}"><?php echo str_repeat('-',$val['level']*4); ?>{$val.cate_name}
              </option> 
            </volist> 
          </select>
        </div>
      </div>

这样,一个可以无限递归的分类树形结构就完成了,总结:核心思想还是模型中的递归函数,先传进去pid默认为零,以后每次递归传入的pid就是上级的id,level用来记录递归层数,最后在视图页面显示时,调用PHP内置函数str_repeat(),用来重复输出'-‘以达到输出时区分级数的效果。

以上这篇创建无限极分类树型结构的简单方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍PHP实现无限极分类生成分类树的方法,包括了PHP实现无限极分类生成分类树的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP实现无限极分类生成分类树的方法。分享给大家供大家参考,具体如下: 现在的分类数据库设计基本都是:每一个分类有一个id主键字段,一个pid指向父类的id,这样便可实现无限级分类,取出的数据就是如下的格式: 不多说,直接上处理代码: 测试运行: 运

  • 本文向大家介绍PHP超牛逼无限极分类生成树方法,包括了PHP超牛逼无限极分类生成树方法的使用技巧和注意事项,需要的朋友参考一下 你还在用浪费时间又浪费内存的递归遍历无限极分类吗,看了该篇文章,我觉得你应该换换了。 这是我在OSChina上看到的一段非常精简的PHP无限极分类生成树方法,巧在引用,整理分享了。 可以看到下面打印的结果: 上面生成树方法还可以精简到5行: 上面这种无限极分类数据树形结构

  • 本文向大家介绍asp.net实现DropDownList,TreeView,ListBox的无限极分类目录树,包括了asp.net实现DropDownList,TreeView,ListBox的无限极分类目录树的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了asp.net实现DropDownList,TreeView,ListBox的无限极分类目录树。分享给大家供大家参考,具体如下: 更多

  • 本文向大家介绍jstree创建无限分级树的方法【基于ajax动态创建子节点】,包括了jstree创建无限分级树的方法【基于ajax动态创建子节点】的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了jstree创建无限分级树的方法。分享给大家供大家参考,具体如下: 首先来看一下效果 页面加载之初 节点全部展开后 首先数据库的表结构如下 其中Id为主键,PId为关联到自身的外键 两个字段均为GU

  • 如何合并数组中的所有结构并生成合并的结构? 例如,使用SparkSQL,我能够读取源json文件并生成数组类型的列,数组中的每个元素都包含一个键:值对。例如,假设我们有一个ArrayType列的值,该列的名称为,值为: 我需要将这个数组类型的列转换为结构类型,其值为{a:1,b:2,c:3}。 由于我是通过读取JSON文件获得模式的,所以我可以使用派生序号获得结果,如: 这个解决方案的问题是,如果

  • 本文向大家介绍PHP无限极分类函数的实现方法详解,包括了PHP无限极分类函数的实现方法详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP无限极分类函数的实现方法。分享给大家供大家参考,具体如下: 在开发程序的时候,有时候,我们需要获取所有栏目(包括一级栏目、二级栏目、三级栏目等等),并按照父子关系形成树型结构。可以采取使用递归或者通过引用方式(php中引用类似C或者C++中的指针,