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函数utf8转gb2312编码
Dec 21 PHP
php仿ZOL分页类代码
Oct 02 PHP
有关php运算符的知识大全
Nov 03 PHP
header导出Excel应用示例
Jan 24 PHP
PHP实现的交通银行网银在线支付接口ECSHOP插件和使用例子
May 10 PHP
PHP 面向对象程序设计(oop)学习笔记(一) - 抽象类、对象接口、instanceof 和契约式编程
Jun 12 PHP
在Debian系统下配置LNMP的教程
Jul 09 PHP
PHP查询附近的人及其距离的实现方法
May 11 PHP
Windows Server 2008 R2和2012中PHP连接MySQL过慢的解决方法
Jul 02 PHP
php中照片旋转 (orientation) 问题的正确处理
Feb 16 PHP
Laravel框架实现model层的增删改查(CURD)操作示例
May 12 PHP
Yii 框架使用数据库(databases)的方法示例
May 19 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正则匹配日期和时间(时间戳转换)的实例代码
2016/12/14 PHP
PHP实现的DES加密解密类定义与用法示例
2020/11/02 PHP
安装docker和docker-compose实例详解
2019/07/30 PHP
PHP7 foreach() 函数修改
2021/03/09 PHP
JavaScript Distilled 基础知识与函数
2010/04/07 Javascript
基于jQuery UI CSS Framework开发Widget的经验
2010/08/21 Javascript
JavaScript获得表单target属性的方法
2015/04/02 Javascript
使用CamanJS在Web页面上处理图像的技巧
2015/08/18 Javascript
javascript发送短信验证码实现代码
2015/11/12 Javascript
Vue.js实现表格动态增加删除的方法(附源码下载)
2017/01/20 Javascript
jquery代码规范让代码越来越好看
2017/02/03 Javascript
Bootstrap modal 多弹窗之叠加显示不出弹窗问题的解决方案
2017/02/23 Javascript
JS实现数组按升序及降序排列的方法
2017/04/26 Javascript
在Vue中如何使用Cookie操作实例
2017/07/27 Javascript
opencv 识别微信登录验证滑动块位置
2018/08/07 Javascript
vue实现搜索功能
2019/05/28 Javascript
Vue事件处理原理及过程详解
2020/03/11 Javascript
微信小程序实现可拖动悬浮图标(包括按钮角标的实现)
2020/12/29 Javascript
python实现中文分词FMM算法实例
2015/07/10 Python
python中in在list和dict中查找效率的对比分析
2018/05/04 Python
python通过zabbix api获取主机
2018/09/17 Python
Flask之请求钩子的实现
2018/12/23 Python
python使用html2text库实现从HTML转markdown的方法详解
2020/02/21 Python
澳大利亚和新西兰最大的在线旅行社之一:Aunt Betty
2019/08/07 全球购物
俄罗斯EPL钻石珠宝店:ЭПЛ
2019/10/22 全球购物
俄罗斯领先的移动和数字设备在线商店:Svyaznoy.ru
2020/12/21 全球购物
Cynthia Rowley官网:全球领先的生活方式品牌
2020/10/27 全球购物
CLR与IL分别是什么含义
2016/08/23 面试题
腾讯广告词
2014/03/19 职场文书
会计人员岗位职责
2014/03/19 职场文书
森林防火标语
2014/06/23 职场文书
学习十八大标语
2014/10/09 职场文书
小学语文教师研修日志
2015/11/13 职场文书
《鲸》教学反思
2016/02/23 职场文书
4种非常实用的python内置数据结构
2021/04/28 Python
Java基础之详解HashSet的使用方法
2021/06/30 Java/Android