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 相关文章推荐
让你的网站首页自动选择语言转跳
Dec 06 PHP
php中判断一个字符串包含另一个字符串的方法
Mar 19 PHP
php 页面执行时间计算代码
Dec 04 PHP
PHP开启gzip页面压缩实例代码
Mar 11 PHP
table标签的结构与合并单元格的实现方法
Jul 24 PHP
PHP关于IE下的iframe跨域导致session丢失问题解决方法
Oct 10 PHP
php遍历文件夹和文件列表示例分享
Mar 11 PHP
PHP检测移动设备类mobile detection使用实例
Apr 14 PHP
php+mysql数据库实现无限分类的方法
Dec 12 PHP
关于php几种字符串连接的效率比较(详解)
Feb 22 PHP
PHP实现的装箱算法示例
Jun 23 PHP
PHP实现通过二维数组键值获取一维键名操作示例
Oct 11 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
在VS2008中编译MYSQL5.1.48的方法
2010/07/03 PHP
PHP IE中下载附件问题解决方法
2014/01/07 PHP
PHP获取当前完整URL地址的函数
2014/12/21 PHP
PHP生成各种常见验证码和Ajax验证过程
2016/01/10 PHP
JS字符串累加Array不一定比字符串累加快(根据电脑配置)
2012/05/14 Javascript
JS获取url链接字符串 location.href
2013/12/23 Javascript
自己封装的常用javascript函数分享
2015/01/07 Javascript
浅析$.getJSON异步请求和同步请求
2016/06/06 Javascript
jquery+CSS3实现3D拖拽相册效果
2016/07/18 Javascript
JavaScript手风琴页面制作
2017/05/17 Javascript
vue中v-model的应用及使用详解
2018/06/27 Javascript
小程序红包雨的实现示例
2019/02/19 Javascript
vue实现的上拉加载更多数据/分页功能示例
2019/05/25 Javascript
JS pushlet XMLAdapter适配器用法案例解析
2020/10/16 Javascript
[47:04]EG vs RNG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
从零学python系列之新版本导入httplib模块报ImportError解决方案
2014/05/23 Python
仅用50行Python代码实现一个简单的代理服务器
2015/04/08 Python
基于python 爬虫爬到含空格的url的处理方法
2018/05/11 Python
TensorFlow实现模型评估
2018/09/07 Python
Python二叉树的遍历操作示例【前序遍历,中序遍历,后序遍历,层序遍历】
2018/12/24 Python
Python根据当前日期取去年同星期日期
2019/04/14 Python
django框架基于模板 生成 excel(xls) 文件操作示例
2019/06/19 Python
python3读取图片并灰度化图片的四种方法(OpenCV、PIL.Image、TensorFlow方法)总结
2019/07/04 Python
如何基于python实现归一化处理
2020/01/20 Python
自我鉴定200字
2013/10/28 职场文书
安全标准化汇报材料
2014/02/03 职场文书
产品质量保证书
2014/04/29 职场文书
机关作风建设心得体会
2014/10/22 职场文书
平安建设汇报材料
2014/12/29 职场文书
慰问信格式
2015/02/14 职场文书
药品销售内勤岗位职责
2015/04/13 职场文书
2016计划生育先进个人事迹材料
2016/02/29 职场文书
2019学校运动会开幕词
2019/05/13 职场文书
python实现自定义日志的具体方法
2021/05/28 Python
Go语言实现Snowflake雪花算法
2021/06/08 Golang
MySQL中的 inner join 和 left join的区别解析(小结果集驱动大结果集)
2023/05/08 MySQL