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原理的opcodes(操作码)
Oct 26 PHP
php批量上传的实现代码
Jun 09 PHP
php echo, print, print_r, sprintf, var_dump, var_expor的使用区别
Jun 20 PHP
php利用单例模式实现日志处理类库
Feb 10 PHP
PHP对象相互引用的内存溢出实例分析
Aug 28 PHP
php实现图片局部打马赛克的方法
Feb 11 PHP
ThinkPHP数据操作方法总结
Sep 28 PHP
php实现无限级分类查询(递归、非递归)
Mar 10 PHP
Yii2使用自带的UploadedFile实现的文件上传
Jun 20 PHP
php微信浏览器分享设置以及回调详解
Aug 01 PHP
yii2实现分页,带搜索的分页功能示例
Jan 07 PHP
在laravel中使用with实现动态添加where条件
Oct 10 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页面间传递参数实例代码
2008/06/05 PHP
PHP多个版本的分析解释
2011/07/21 PHP
PHP变量内存分配问题记录整理
2013/11/27 PHP
php中替换字符串中的空格为逗号','的方法
2014/06/09 PHP
CodeIgniter CLI模式简介
2014/06/17 PHP
php生成酷炫的四个字符验证码
2016/04/22 PHP
PHP弱类型语言中类型判断操作实例详解
2017/08/10 PHP
基于jQuery的获取标签名的代码
2012/07/16 Javascript
node.js中的定时器nextTick()和setImmediate()区别分析
2014/11/26 Javascript
Javascript实现图片轮播效果(二)图片序列节点的控制实现
2016/02/17 Javascript
jQuery ajax应用总结
2016/06/02 Javascript
关于webuploader插件使用过程遇到的小问题
2016/11/07 Javascript
JavaScript实现购物车基本功能
2017/07/21 Javascript
简单实现jQuery上传图片显示预览功能
2020/06/29 jQuery
vue 封装自定义组件之tabal列表编辑单元格组件实例代码
2017/09/07 Javascript
vue实现滑动切换效果(仅在手机模式下可用)
2020/06/29 Javascript
微信小程序动态评分展示/五角星展示/半颗星展示/自定义长度展示功能的实现
2020/07/22 Javascript
微信小程序使用前置摄像头拍照
2020/10/22 Javascript
对vue生命周期的深入理解
2020/12/03 Vue.js
[06:09]辉夜杯主赛事开幕式
2015/12/25 DOTA
[01:07:17]EG vs Optic Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
python处理数据,存进hive表的方法
2018/07/04 Python
对python For 循环的三种遍历方式解析
2019/02/01 Python
在交互式环境中执行Python程序过程详解
2019/07/12 Python
Python 类方法和实例方法(@classmethod),静态方法(@staticmethod)原理与用法分析
2019/09/20 Python
Restful_framework视图组件代码实例解析
2020/11/17 Python
CSS3实现类似翻书效果的过渡动画的示例代码
2019/09/06 HTML / CSS
CSS3教程(8):CSS3透明度指南
2009/04/02 HTML / CSS
HTML5 Canvas绘制五星红旗
2016/05/04 HTML / CSS
Marlies Dekkers内衣美国官方网上商店:高端内衣品牌
2018/11/12 全球购物
酒店管理专业毕业生求职自荐信
2014/04/28 职场文书
农业开发项目建议书
2014/05/16 职场文书
信用卡逾期证明示例
2014/09/13 职场文书
2014年妇联工作总结
2014/11/21 职场文书
2015年党性分析材料
2014/12/19 职场文书
Mysql分析设计表主键为何不用uuid
2022/03/31 MySQL