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 addslashes及其他清除空格的方法是不安全的
Jan 25 PHP
PHP判断图片格式的七种方法小结
Jun 03 PHP
探讨:如何编写PHP扩展
Jun 13 PHP
php上传图片存入数据库示例分享
Mar 11 PHP
PHP过滤黑名单关键字的方法
Dec 01 PHP
php实现基于微信公众平台开发SDK(demo)扩展的方法
Dec 22 PHP
PHP 实现的将图片转换为TXT
Oct 21 PHP
详解PHP匿名函数与注意事项
Mar 29 PHP
PHP7+Nginx的配置与安装教程详解
May 10 PHP
PHP基于DOM创建xml文档的方法示例
Feb 08 PHP
php实现文件管理与基础功能操作
Mar 21 PHP
PHP实现倒计时功能
Nov 16 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中用header图片地址 简单隐藏图片源地址
2008/04/09 PHP
php FPDF类库应用实现代码
2009/03/20 PHP
PHP教程 预定义变量
2009/10/23 PHP
基于PHP选项与信息函数的使用详解
2013/05/10 PHP
PHP钩子与简单分发方式实例分析
2017/09/04 PHP
PHP绕过open_basedir限制操作文件的方法
2018/06/10 PHP
自适应图片大小的弹出窗口
2006/07/27 Javascript
javascript面向对象编程(一) 实例代码
2010/06/25 Javascript
一个简单的网站访问JS计数器 刷新1次加1次访问
2012/09/20 Javascript
js+数组实现网页上显示时间/星期几的实用方法
2013/01/18 Javascript
window.setInterval()方法的定义和用法及offsetLeft与style.left的区别
2015/11/11 Javascript
js控件Kindeditor实现图片自动上传功能
2020/07/20 Javascript
浅析JavaScript函数的调用模式
2016/08/10 Javascript
AngularJs bootstrap搭载前台框架——基础页面
2016/09/01 Javascript
WEB前端实现裁剪上传图片功能
2016/10/17 Javascript
jQuery中ajax错误调试分析
2016/12/01 Javascript
jquery ajaxfileupload异步上传插件使用详解
2017/02/08 Javascript
小程序实现发表评论功能
2018/07/06 Javascript
JQuery样式操作、click事件以及索引值-选项卡应用示例
2019/05/14 jQuery
详解Vue-cli3.X使用px2rem遇到的问题
2019/08/09 Javascript
浅谈vuex为什么不建议在action中修改state
2020/02/02 Javascript
jQuery HTML设置内容和属性操作实例分析
2020/05/20 jQuery
[01:11:15]VGJ.S vs Secret 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python使用matplotlib绘制随机漫步图
2018/08/27 Python
python实现RabbitMQ的消息队列的示例代码
2018/11/08 Python
python matplotlib画图库学习绘制常用的图
2019/03/19 Python
Python调用C语言的实现
2019/07/26 Python
3分钟看懂Python后端必须知道的Django的信号机制
2020/07/26 Python
HTML5图片预览实例分享
2014/06/04 HTML / CSS
用HTML5实现鼠标滚轮事件放大缩小图片的功能
2015/06/25 HTML / CSS
腾讯技术类校园招聘笔试试题
2014/05/06 面试题
工商管理专业职业生涯规划
2014/01/01 职场文书
企业安全生产责任书范本
2014/07/28 职场文书
购房协议书范本
2014/10/02 职场文书
JavaScript分页组件使用方法详解
2021/07/26 Javascript
MySQL Shell import_table数据导入的实现
2021/08/07 MySQL