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 相关文章推荐
phpBB BBcode处理的漏洞
Oct 09 PHP
用Apache反向代理设置对外的WWW和文件服务器
Oct 09 PHP
MYSQL环境变量设置方法
Jan 15 PHP
PHP中文件读、写、删的操作(PHP中对文件和目录操作)
Mar 06 PHP
如何使用PHP批量去除文件UTF8 BOM信息
Aug 05 PHP
Drupal读取Excel并导入数据库实例
Mar 02 PHP
JS异常处理try..catch语句的作用和实例
May 05 PHP
PHP 验证登陆类分享
Mar 13 PHP
Yii2实现同时搜索多个字段的方法
Aug 10 PHP
PHP验证终端类型是否为手机的简单实例
Feb 07 PHP
php 类中的常量、静态属性、非静态属性的区别
Apr 09 PHP
php多文件打包下载的实例代码
Jul 12 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
php5数字型字符串加解密代码
2008/04/24 PHP
php中取得URL的根域名的代码
2011/03/23 PHP
php更新mysql后获取影响的行数发生异常解决方法
2013/03/28 PHP
php多功能图片处理类分享(php图片缩放类)
2014/03/14 PHP
Windows下安装PHP单元测试环境PHPUnit图文教程
2014/10/24 PHP
php读取mssql的ntext字段返回值为空的解决方法
2014/12/30 PHP
javascript实现下雪效果【实例代码】
2016/05/03 Javascript
jQuery hover事件简单实现同时绑定2个方法
2016/06/07 Javascript
jquery实现轮播图效果
2017/02/13 Javascript
js css自定义分页效果
2017/02/24 Javascript
利用node.js制作命令行工具方法教程(一)
2017/06/22 Javascript
Vue的百度地图插件尝试使用
2017/09/06 Javascript
vue cli 全面解析
2018/02/28 Javascript
浅谈开发eslint规则
2018/10/01 Javascript
什么时候不能在 Node.js 中使用 Lock Files
2019/06/24 Javascript
详解vue中$nextTick和$forceUpdate的用法
2019/12/11 Javascript
extjs图形绘制之饼图实现方法分析
2020/03/06 Javascript
jquery绑定事件 bind和on的用法与区别分析
2020/05/22 jQuery
基于JavaScript实现猜数字游戏代码实例
2020/07/30 Javascript
在Python中使用列表生成式的教程
2015/04/27 Python
python图片验证码生成代码
2016/07/02 Python
OpenCV 轮廓检测的实现方法
2019/07/03 Python
Python爬虫库BeautifulSoup获取对象(标签)名,属性,内容,注释
2020/01/25 Python
40个你可能不知道的Python技巧附代码
2020/01/29 Python
CSS3+font字体文件实现圆形半透明菜单具体步骤(图解)
2013/06/03 HTML / CSS
中国宠物用品商城:E宠商城
2016/08/27 全球购物
荷兰度假屋租赁网站:Aan Zee
2020/02/28 全球购物
CSMA/CD介质访问控制协议
2015/11/17 面试题
线程问题:wait()方法是定义在哪个类里面
2015/07/07 面试题
优秀员工表扬信
2014/01/17 职场文书
职业女性的职业规划
2014/03/04 职场文书
工地安全标语
2014/06/07 职场文书
受资助学生感谢信
2015/01/21 职场文书
元宵节寄语大全
2015/02/27 职场文书
2015年保安个人工作总结
2015/04/02 职场文书
Vue Mint UI mt-swipe的使用方式
2022/06/05 Vue.js