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伪静态页面函数附使用方法
Jun 20 PHP
php下通过IP获取地理位置的代码(小偷程序)
Jun 09 PHP
微博短链接算法php版本实现代码
Sep 15 PHP
用PHP编写和读取XML的几种方式
Jan 12 PHP
PHP实现取得HTTP请求的原文
Aug 18 PHP
php+mysql数据库实现无限分类的方法
Dec 12 PHP
PHP防止刷新重复提交页面的示例代码
Nov 11 PHP
php删除一个路径下的所有文件夹和文件的方法
Feb 07 PHP
Yii2.0 RESTful API 基础配置教程详解
Dec 26 PHP
PHP进阶学习之命名空间基本用法分析
Jun 18 PHP
laravel框架实现后台登录、退出功能示例
Oct 31 PHP
PHP扩展类型及安装方式解析
Apr 27 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 文件上传模型,支持多文件上传
2009/08/13 PHP
解析使用substr截取UTF-8中文字符串出现乱码的问题
2013/06/20 PHP
php伪静态之APACHE篇
2014/06/02 PHP
php实现的短网址算法分享
2014/06/20 PHP
php如何连接sql server
2015/10/16 PHP
jQuery判断数组是否包含了指定的元素
2015/03/10 Javascript
零基础轻松学JavaScript闭包
2016/12/30 Javascript
JavaScript实现为事件句柄绑定监听函数的方法分析
2017/11/14 Javascript
JavaScript设计模式之单例模式原理与用法实例分析
2018/07/26 Javascript
基于JavaScript canvas绘制贝塞尔曲线
2018/12/25 Javascript
jQuery中each和js中forEach的区别分析
2019/02/27 jQuery
微信小程序页面间传值与页面取值操作实例分析
2019/04/30 Javascript
JS常见面试试题总结【去重、遍历、闭包、继承等】
2019/08/27 Javascript
微信小程序一周时间表功能实现
2019/10/17 Javascript
JavaScript中变量提升机制示例详解
2019/12/27 Javascript
JavaScript中的this基本问题实例小结
2020/03/09 Javascript
[44:37]完美世界DOTA2联赛PWL S3 Forest vs access 第一场 12.11
2020/12/13 DOTA
基于Django模板中的数字自增(详解)
2017/09/05 Python
python 除法保留两位小数点的方法
2018/07/16 Python
python使用matplotlib画柱状图、散点图
2019/03/18 Python
Python3 执行Linux Bash命令的方法
2019/07/12 Python
解决python3 安装不了PIL的问题
2019/08/16 Python
解决Jupyter Notebook开始菜单栏Anaconda下消失的问题
2020/04/13 Python
使用K.function()调试keras操作
2020/06/17 Python
Python如何输出警告信息
2020/07/30 Python
CSS3 创建网页动画实现弹跳球动效果
2018/10/30 HTML / CSS
美国领先的奢侈手表在线零售商:WatchMaxx
2017/12/17 全球购物
什么叫做SQL注入,如何防止
2016/10/04 面试题
幼儿师范毕业生自荐信
2013/11/09 职场文书
服务员自我评价
2014/01/25 职场文书
运动会通讯稿400字
2014/01/28 职场文书
小学数学教学反思
2014/02/02 职场文书
2019职场单身人才调研报告:互联网行业单身比例最高
2019/08/07 职场文书
Web前端:CSS最强总结 附详细代码
2021/03/31 HTML / CSS
全新239军机修复记
2022/04/05 无线电