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面向对象全攻略 (十六) 对象的串行化
Sep 30 PHP
探讨PHP删除文件夹的三种方法
Jun 09 PHP
解析PHP处理换行符的问题 \r\n
Jun 13 PHP
php使用qr生成二维码的示例分享
Jan 20 PHP
thinkphp中session和cookie无效的解决方法
Dec 19 PHP
WordPress分页伪静态加html后缀
Jun 08 PHP
PHP入门教程之数组用法汇总(创建,删除,遍历,排序等)
Sep 11 PHP
如何使用php等比例缩放图片
Oct 12 PHP
PHP中overload与override的区别
Feb 13 PHP
PHP+RabbitMQ实现消息队列的完整代码
Mar 20 PHP
PHP实现chrome表单请求数据转换为接口使用的json数据
Mar 04 PHP
aec加密 php_php aes加密解密类(兼容php5、php7)
Mar 14 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 分库分表hash算法
2009/11/12 PHP
php curl常见错误:SSL错误、bool(false)
2011/12/28 PHP
PHP缓存技术的多种方法小结
2012/08/14 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
2017/09/20 PHP
PHP Primary script unknown 解决方法总结
2019/08/22 PHP
jQuery 使用手册(四)
2009/09/23 Javascript
关于JavaScript命名空间的一些心得
2014/06/07 Javascript
Javascript中this的用法详解
2014/09/22 Javascript
使用cluster 将自己的Node服务器扩展为多线程服务器
2014/11/10 Javascript
jQuery中bind(),live(),delegate(),on()绑定事件方法实例详解
2016/01/19 Javascript
Angular.js如何从PHP读取后台数据
2016/03/24 Javascript
Vue组件BootPage实现简单的分页功能
2016/09/12 Javascript
JS判断两个对象内容是否相等的方法示例
2017/04/10 Javascript
JScript实现表格的简单操作
2017/08/15 Javascript
JS实现问卷星自动填问卷脚本并在两秒自动提交功能
2020/06/17 Javascript
JavaScript实现重力下落与弹性效果的方法分析
2017/12/20 Javascript
Node.js中,在cmd界面,进入退出Node.js运行环境的方法
2018/05/12 Javascript
jQuery实现左右两个列表框的内容相互移动功能示例
2019/01/27 jQuery
python文件操作之目录遍历实例分析
2015/05/20 Python
Python实现的字典值比较功能示例
2018/01/08 Python
Django 数据库同步操作技巧详解
2019/07/19 Python
Keras之fit_generator与train_on_batch用法
2020/06/17 Python
Python3 用什么IDE开发工具比较好
2020/11/28 Python
CSS3属性background-size使用指南
2014/12/09 HTML / CSS
如何利用input事件来监听移动端的输入
2016/04/15 HTML / CSS
非功能性需求都包括哪些方面
2013/10/29 面试题
搞笑爱情保证书
2014/04/29 职场文书
领导班子四风查摆对照检查材料思想汇报
2014/10/05 职场文书
初中生旷课检讨书范文
2014/10/06 职场文书
2014年督导工作总结
2014/11/19 职场文书
2014年销售内勤工作总结
2014/12/01 职场文书
“5.12”护士节主持词
2015/07/04 职场文书
导游词之湖州-太湖
2019/10/11 职场文书
详解Js模块化的作用原理和方案
2021/04/29 Javascript
HashMap实现保存两个key相同的数据
2021/06/30 Java/Android
vue 自定义的组件绑定点击事件
2022/04/21 Vue.js