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


Posted in PHP onJune 20, 2017

先上效果图

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

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

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

一、在控制器中按字段查询,查询出所有分类信息(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 array_flip() 删除数组重复元素
Jan 14 PHP
php &amp;&amp; 逻辑与运算符使用说明
Mar 04 PHP
ajax完美实现两个网页 分页功能的实例代码
Apr 16 PHP
探讨php define()函数及defined()函数使用详解
Jun 09 PHP
Linux下php5.4启动脚本
Aug 03 PHP
PHP中检索字符串的方法分析【strstr与substr_count方法】
Feb 17 PHP
php对xml文件的增删改查操作实现方法分析
May 19 PHP
PHP使用Redis实现防止大并发下二次写入的方法
Oct 09 PHP
PHP htmlentities()函数用法讲解
Feb 25 PHP
Thinkphp5 自定义上传文件名的实现方法
Jul 23 PHP
PHP利用DWZ.CN服务生成短网址
Aug 11 PHP
php 使用 __call实现重载功能示例
Nov 18 PHP
PHP实现的简单排列组合算法应用示例
Jun 20 #PHP
php提交表单时保留多个空格及换行的文本样式的方法
Jun 20 #PHP
PHP中模糊查询并关联三个select框
Jun 19 #PHP
在laravel中使用Symfony的Crawler组件分析HTML
Jun 19 #PHP
Laravel给生产环境添加监听事件(SQL日志监听)
Jun 19 #PHP
Yii 2.0自带的验证码使用经验分享
Jun 19 #PHP
PHP实现下载远程图片保存到本地的方法
Jun 19 #PHP
You might like
让你的PHP同时支持GIF、png、JPEG
2006/10/09 PHP
php下实现折线图效果的代码
2007/04/28 PHP
PHP5函数小全(分享)
2013/06/06 PHP
浅谈php正则表达式中的非贪婪模式匹配的使用
2014/11/25 PHP
php使用pdo连接并查询sql数据库的方法
2014/12/24 PHP
Laravel5中contracts详解
2015/03/02 PHP
php自定义分页类完整实例
2015/12/25 PHP
PHP闭包函数传参及使用外部变量的方法
2016/03/15 PHP
php 伪造HTTP_REFERER页面URL来源的三种方法
2016/09/22 PHP
php字符串操作常见问题小结
2016/10/11 PHP
ie和firefox中img对象区别的困惑
2006/12/27 Javascript
JavaScript中访问节点对象的方法有哪些如何使用
2013/09/24 Javascript
jQuery实现“扫码阅读”功能
2015/01/21 Javascript
JavaScript数据类型判定的总结笔记
2015/07/31 Javascript
JavaScript中的Number数字类型学习笔记
2016/05/26 Javascript
AngularJS的ng-click传参的方法
2017/06/19 Javascript
详解微信小程序胶囊按钮返回|首页自定义导航栏功能
2019/06/14 Javascript
Python3.X 线程中信号量的使用方法示例
2017/07/24 Python
python 在某.py文件中调用其他.py内的函数的方法
2019/06/25 Python
HTTP状态码详解
2021/03/18 杂记
实例教程 纯CSS3打造非常炫的加载动画效果
2014/11/05 HTML / CSS
使用CSS实现弹性视频html5案例实践
2012/12/26 HTML / CSS
植物选择:Botanic Choice
2017/02/15 全球购物
Charlotte Tilbury美国官网:英国美妆品牌
2017/10/13 全球购物
美国家用和厨房电器销售网站:Appliances Connection
2020/01/24 全球购物
施工资料员的岗位职责
2013/12/22 职场文书
2014端午节活动策划方案
2014/01/27 职场文书
业务部门经理岗位职责
2014/02/23 职场文书
工地标语大全
2014/06/18 职场文书
春游踏青活动方案
2014/08/14 职场文书
大学生实习证明范本
2014/09/19 职场文书
悬空寺导游词
2015/02/05 职场文书
世界水日宣传活动总结
2015/02/09 职场文书
护士自荐信怎么写
2015/03/06 职场文书
国庆节新闻稿
2015/07/17 职场文书
搞笑婚礼主持词开场白
2015/11/24 职场文书