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 相关文章推荐
mysql 全文搜索 技巧
Apr 27 PHP
php discuz 主题表和回帖表的设计
Mar 13 PHP
生成ubuntu自动切换壁纸xml文件的php代码
Jul 17 PHP
PHP获取windows登录用户名的方法
Jun 24 PHP
ThinkPHP里用U方法调用js文件实例
Jun 18 PHP
WordPress中获取页面链接和标题的相关PHP函数用法解析
Dec 17 PHP
PHPExcel笔记, mpdf导出
May 03 PHP
利用PHP如何写APP接口详解
Aug 23 PHP
PHP多维数组排序array详解
Nov 21 PHP
php微信公众号开发之音乐信息
Oct 20 PHP
php curl操作API接口类完整示例
May 21 PHP
laravel5表单唯一验证的实例代码
Sep 30 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实现的简单压缩英文字符串的代码
2008/04/24 PHP
Zend framework处理一个http请求的流程分析
2010/02/08 PHP
测试PHP连接MYSQL成功与否的代码
2013/08/16 PHP
PHP单元测试配置与使用方法详解
2019/12/27 PHP
javascript中利用数组实现的循环队列代码
2010/01/24 Javascript
js模拟类继承小例子
2010/07/17 Javascript
避免回车键导致的页面无意义刷新的解决方法
2011/04/12 Javascript
表单的焦点顺序tabindex和对应enter键提交
2013/01/04 Javascript
实现局部遮罩与关闭原理及代码
2013/02/04 Javascript
优化Jquery,提升网页加载速度
2013/11/14 Javascript
JavaScript打印网页指定区域的例子
2014/05/03 Javascript
JavaScript中读取和保存文件实例
2014/05/08 Javascript
jQuery实现的多屏图像图层切换效果实例
2015/05/07 Javascript
基于javascript如何传递特殊字符
2015/11/30 Javascript
Jquery插件之Fancybox丰富的弹出层效果附源码下载
2015/12/02 Javascript
理解javascript中的严格模式
2016/02/01 Javascript
谈一谈jQuery核心架构设计
2016/03/28 Javascript
基于JavaScript实现轮播图原理及示例
2020/04/10 Javascript
JavaScript中三种常见的排序方法
2017/02/24 Javascript
基于JavaScript实现瀑布流效果
2017/03/29 Javascript
express 项目分层实践详解
2018/12/10 Javascript
[01:51]开启你的城市传奇 完美世界城市挑战赛开始报名
2018/10/09 DOTA
python测试驱动开发实例
2014/10/08 Python
Python存取XML的常见方法实例分析
2017/03/21 Python
在pycharm中python切换解释器失败的解决方法
2018/10/29 Python
Python开启线程,在函数中开线程的实例
2019/02/22 Python
详解从Django Allauth中进行登录改造小结
2019/12/18 Python
简单了解Django ORM常用字段类型及参数配置
2020/01/07 Python
聊聊python中的异常嵌套
2020/09/01 Python
Django用户认证系统如何实现自定义
2020/11/12 Python
ORACLE第二个十问
2013/12/14 面试题
青年创业培训欢迎词
2014/01/08 职场文书
小小的船教学反思
2014/02/21 职场文书
教师工作失职检讨书
2014/09/18 职场文书
《玩出了名堂》教学反思
2016/02/17 职场文书
导游词之阆中古城
2019/12/23 职场文书