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查询搜索引擎排名位置的代码
Jan 05 PHP
php file_exists 检查文件或目录是否存在的函数
May 10 PHP
在PHP中设置、使用、删除Cookie的解决方法
May 06 PHP
PHP实现生成唯一编号(36进制的不重复编号)
Jul 01 PHP
PHP大批量插入数据库的3种方法和速度对比
Jul 08 PHP
PHP的Yii框架使用中的一些错误解决方法与建议
Aug 21 PHP
使用PHP处理数据库数据如何将数据返回客户端并显示当前状态
Feb 16 PHP
示例详解Laravel重置密码代码重构
Aug 10 PHP
form表单传递数组数据、php脚本接收的实例
Feb 09 PHP
PHP实现将多个文件中的内容合并为新文件的方法示例
Jun 10 PHP
PHP使用PDO访问oracle数据库的步骤详解
Sep 29 PHP
小程序微信支付功能配置方法示例详解【基于thinkPHP】
May 05 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
Laravel 4.2 中队列服务(queue)使用感受
2014/10/30 PHP
简单谈谈php中ob_flush和flush的区别
2014/11/27 PHP
javascript 通用简单的table选项卡实现
2010/05/07 Javascript
解析Javascript中难以理解的11个问题
2013/12/09 Javascript
javascript字符串函数汇总
2015/12/06 Javascript
详解vue服务端渲染浏览器端缓存(keep-alive)
2018/10/12 Javascript
JavaScript常用8种数组去重代码实例
2020/09/09 Javascript
如何在vue中使用HTML 5 拖放API
2021/01/14 Vue.js
[01:03:13]VG vs Pain 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python计算回文数的方法
2015/03/11 Python
谈谈如何手动释放Python的内存
2016/12/17 Python
利用python将xml文件解析成html文件的实现方法
2017/12/22 Python
Python中判断输入是否为数字的实现代码
2018/05/26 Python
基于数据归一化以及Python实现方式
2018/07/11 Python
Python统计python文件中代码,注释及空白对应的行数示例【测试可用】
2018/07/25 Python
Python利用heapq实现一个优先级队列的方法
2019/02/03 Python
在python中利用pycharm自定义代码块教程(三步搞定)
2020/04/15 Python
python Canny边缘检测算法的实现
2020/04/24 Python
python模块如何查看
2020/06/16 Python
Python collections.defaultdict模块用法详解
2020/06/18 Python
香港交友网站:be2香港
2018/07/22 全球购物
NICKIS.com荷兰:设计师儿童时装
2020/01/08 全球购物
某公司部分笔试题
2013/11/05 面试题
中医专业职业生涯规划书范文
2014/01/04 职场文书
幼儿园亲子活动方案
2014/01/29 职场文书
酒店员工职业生涯规划
2014/02/25 职场文书
文员岗位职责范本
2014/03/08 职场文书
高中生学习计划书
2014/09/15 职场文书
大学生学习计划书
2014/09/15 职场文书
2014年银行柜员工作总结
2014/11/12 职场文书
2014年实习期工作总结
2014/11/27 职场文书
药店收银员岗位职责
2015/04/07 职场文书
幼儿园教师师德师风承诺书
2015/04/28 职场文书
2015年材料员工作总结
2015/04/30 职场文书
导游词之京东大峡谷旅游区
2019/10/29 职场文书
python Tkinter的简单入门教程
2021/04/11 Python