tp5递归 无限级分类详解


Posted in PHP onOctober 18, 2019

在TP5公共common.php文件里写

<?php
 //计算某个类别所属的类别层数
 function getcatelayer($cateid,$flag=1){
 $cates = M('Gcategory');
 $ini['cate_id'] = $cateid;
 $arr = $cates->where($ini)->find();
 if($arr['parent_id']!=0){
  $flag = getcatelayer($arr['parent_id'],$flag+1);
 }
 return $flag;
 }
 
//类别递归(单层)
function getone($arr,$parent=0,$lev=0){
 //迭代
 $task=array($parent);//任务数组
 $tree=array();//结果数组
 while (!empty($task)){
 $flg=false;
 foreach ($arr as $k=>$v){
  
  if ($v['parent_id']==$parent) {
  $tree[]=array(
   'id'=>$v['cate_id'],
   'name'=>$v['cate_name'],
   'lev'=>$lev
  );
  array_push($task, $v['cate_id']);
  $parent=$v['cate_id'];
  $lev=$lev+1;
  unset($arr[$k]);
  $flg=true;
  }
 
 }
 if ($flg==false) {
  array_pop($task);
  $parent=end($task);
  $lev=$lev-1;
 }
 }
 return $tree;
 
}
//类别递归(多层)
function getCates($arr,$pid=0)
{
 for($i=0; $i<count($arr); $i++){
  if($arr[$i]['parent_id']==$pid){
  $newArr[] = array(
   "id"=>$arr[$i]['cate_id'],
   "name"=>$arr[$i]['cate_name'],
   'son'=>getCates($arr,$arr[$i]['cate_id']),
  );
  }
 }
 return $newArr;
}
 
 
//查询类别所属级
function getlayer($cateid,$flg=1)
{
 $gcg=M("Gcategory");
 $ini["cate_id"]=$cateid;
 $cateArr=$gcg->where($ini)->find();
 if($cateArr['parent_id']!=0)
 {
 $flg=getlayer($cateArr['parent_id'],$flg+1);
 }
 return $flg;
}

一般只用其中的递归单层就可以了

控制器中

<?php
//分类管理
namespace app\admin\Controller;
use think\Db;
use think\Controller;
class CategoryController extends Controller
{ 
 /**
 * 分类列表页(递归)
 */
 public function category_list()
 {
 header('content-type:text/html;charset=utf-8');
 $categoryArr=db::name('表名')->select();
 //调用递归函数
 $getall=getone($categoryArr);
 $this->assign("getall",$getall);
 return $this->fetch()
 }

视图 view中

<div class="conShow">
        <table border="1" cellspacing="0" cellpadding="0">
          <tr>
            <td width="100px" class="tdColor tdC">id</td>
            <td width="150px" class="tdColor">汽车类型</td>
            <td width="180px" class="tdColor">操作</td>
          </tr>
          {foreach name="getall" id="v"}
          <tr>
            <td>{$v.id}</td>
            <td >{php}echo str_repeat(' ',$v['lev']*2){/php}|-{$v['name']}</td>
            <td><a href="connoisseuradd.html" rel="external nofollow" ><img class="operation"
                                src="/img/admin/update.png"></a> <img class="operation delban"
                                                   src="/img/admin/delete.png"></td>
          </tr>
          {/foreach}
        </table>
        <div class="paging">此处是分页</div>
      </div>

以上这篇tp5递归 无限级分类详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
Php Image Resize图片大小调整的函数代码
Jan 17 PHP
给初学者的30条PHP最佳实践(荒野无灯)
Aug 02 PHP
基于php使用memcache存储session的详解
Jun 25 PHP
分享下PHP register_globals 值为on与off的理解
Sep 26 PHP
通过curl模拟post和get方式提交的表单类
Apr 23 PHP
php 批量添加多行文本框textarea一行一个
Jun 03 PHP
PHP+iFrame实现页面无需刷新的异步文件上传
Sep 16 PHP
PHP类的封装与继承详解
Sep 29 PHP
PHP将二维数组某一个字段相同的数组合并起来的方法
Feb 26 PHP
php session的应用详细介绍
Mar 22 PHP
完美解决thinkphp唯一索引重复时出错的问题
Mar 31 PHP
PHP读取文件,解决中文乱码UTF-8的方法分析
Jan 22 PHP
确保Laravel网站不会被嵌入到其他站点中的方法
Oct 18 #PHP
PHP的Trait机制原理与用法分析
Oct 18 #PHP
tp5修改(实现即点即改)
Oct 18 #PHP
在TP5数据库中四个字段实现无限分类的示例
Oct 18 #PHP
PHP getID3类的使用方法学习笔记【附getID3源码下载】
Oct 18 #PHP
PHP使用JpGraph绘制折线图操作示例【附源码下载】
Oct 18 #PHP
tp5.1 实现setInc字段自动加1
Oct 18 #PHP
You might like
PHP中将网页导出为Word文档的代码
2012/05/25 PHP
php-fpm配置详解
2014/02/12 PHP
php中cookie实现二级域名可访问操作的方法
2014/11/11 PHP
php一行代码获取文件后缀名实例分析
2014/11/12 PHP
PHP中获取文件创建日期、修改日期、访问时间的方法
2016/11/05 PHP
tp5 实现列表数据根据状态排序
2019/10/18 PHP
分享十五个最佳jQuery 幻灯插件和教程
2010/03/27 Javascript
jquery.pagination.js 无刷新分页实现步骤分享
2012/05/23 Javascript
jQuery获取浏览器中的分辨率实现代码
2013/04/23 Javascript
JS正则表达式验证数字代码
2014/01/28 Javascript
30个经典的jQuery代码开发技巧
2014/12/15 Javascript
解决WordPress使用CDN后博文无法评论的错误
2015/12/15 Javascript
微信小程序网络请求的封装与填坑之路
2017/04/01 Javascript
js实现数组和对象的深浅拷贝
2017/09/30 Javascript
在vue项目中使用codemirror插件实现代码编辑器功能
2019/08/27 Javascript
[01:38]完美世界DOTA2联赛PWL S3 集锦第四期
2020/12/21 DOTA
python re正则表达式模块(Regular Expression)
2014/07/16 Python
python求pi的方法
2014/10/08 Python
Python中的descriptor描述器简明使用指南
2016/06/02 Python
Python3 Post登录并且保存cookie登录其他页面的方法
2018/12/28 Python
centos+nginx+uwsgi+Django实现IP+port访问服务器
2019/11/15 Python
Css3新特性应用之视觉效果实例
2016/12/12 HTML / CSS
伦敦时尚生活的缩影:LN-CC
2017/01/24 全球购物
iHerb中文官网:维生素、保健品和健康产品
2018/11/01 全球购物
澳大利亚Mocha官方网站:包、钱包、珠宝和配饰
2019/07/18 全球购物
家长会演讲稿范文
2014/01/10 职场文书
办公自动化毕业生求职信
2014/03/09 职场文书
小学生手册家长评语
2014/04/16 职场文书
关于读书的演讲稿
2014/05/07 职场文书
公司活动总结怎么写
2014/06/25 职场文书
监察建议书
2015/02/04 职场文书
4S店收银员岗位职责
2015/04/07 职场文书
生产现场禁烟通知
2015/04/23 职场文书
2015领导干部廉洁自律工作总结
2015/07/23 职场文书
办公室日常管理制度
2015/08/04 职场文书
python之django路由和视图案例教程
2021/07/26 Python