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 相关文章推荐
第十四节--命名空间
Nov 16 PHP
php pack与unpack 摸板字符字符含义
Oct 29 PHP
mysql总结之explain
Feb 27 PHP
PHP生成验证码时“图像因其本身有错无法显示”的解决方法
Aug 07 PHP
PHP保留两位小数并且四舍五入及不四舍五入的方法
Sep 22 PHP
php设计模式之单例模式使用示例
Jan 20 PHP
PHP中substr函数字符串截取用法分析
Jan 07 PHP
详解PHP的Yii框架中扩展的安装与使用
Apr 01 PHP
简单谈谈PHP中的include、include_once、require以及require_once语句
Apr 23 PHP
CodeIgniter 完美解决URL含有中文字符串
May 13 PHP
PHP判断是手机端还是PC端 PHP判断是否是微信浏览器
Mar 15 PHP
Ubuntu 16.04下安装PHP 7过程详解
Mar 28 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
预告映像公开!第1章续篇剧场版动画《Princess Principal Crown Handler》4月10日上映!
2020/03/06 日漫
抓取YAHOO股票报价的类
2009/05/15 PHP
PHP调用MsSQL Server 2012存储过程获取多结果集(包含output参数)的详解
2013/07/03 PHP
CodeIgniter错误mysql_connect(): No such file or directory解决方法
2014/09/06 PHP
PHP中round()函数对浮点数进行四舍五入的方法
2014/11/19 PHP
基于PHP如何把汉字转化为拼音
2015/12/11 PHP
PHP中功能强大却很少使用的函数实例小结
2016/11/10 PHP
MAC下通过改apache配置文件切换php多版本的方法
2017/04/26 PHP
PHP中抽象类,接口功能、定义方法示例
2019/02/26 PHP
PHP封装请求类实例分析【基于Yii框架】
2019/10/17 PHP
JQuery打造PHP的AJAX表单提交实例
2009/11/03 Javascript
Knockout数组(observable)使用详解示例
2013/11/15 Javascript
JavaScript学习笔记之Function对象
2015/01/22 Javascript
javascript检查某个元素在数组中的索引值
2016/03/30 Javascript
jQuery纵向导航菜单效果实现方法
2016/12/19 Javascript
JS实现json的序列化和反序列化功能示例
2017/06/13 Javascript
利用JS做网页特效_大图轮播(实例讲解)
2017/08/09 Javascript
angular4实现tab栏切换的方法示例
2017/10/21 Javascript
动态Axios的配置步骤详解
2018/01/12 Javascript
JavaScript中var、let、const区别浅析
2018/06/24 Javascript
详解微信小程序之一键复制到剪切板
2019/04/24 Javascript
ES6 Generator基本使用方法示例
2020/06/06 Javascript
[05:09]第二届DOTA2亚洲邀请赛决赛日比赛集锦:iG 3:0 OG夺冠
2017/04/05 DOTA
浅谈Tensorflow由于版本问题出现的几种错误及解决方法
2018/06/13 Python
django之状态保持-使用redis存储session的例子
2019/07/28 Python
Python实现UDP程序通信过程图解
2020/05/15 Python
python获取时间戳的实现示例(10位和13位)
2020/09/23 Python
python Autopep8实现按PEP8风格自动排版Python代码
2021/03/02 Python
交通专业个人自荐信格式
2013/09/23 职场文书
雪山饭庄的创业计划书范文
2014/01/18 职场文书
护理职业生涯规划书
2014/01/24 职场文书
店面销售职位的职责
2014/03/09 职场文书
校庆活动策划方案
2014/06/05 职场文书
领导个人查摆剖析材料
2014/10/29 职场文书
小时代观后感
2015/06/10 职场文书
Python中使用Opencv开发停车位计数器功能
2022/04/04 Python