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_odbc和php写的serach数据库程序
Oct 09 PHP
PHP静态类
Nov 25 PHP
php桌面中心(一) 创建数据库
Mar 11 PHP
坏狼php学习 计数器实例代码
Jun 15 PHP
PHP 循环列出目录内容的函数代码
May 26 PHP
PHP之COOKIE支持详解
Sep 20 PHP
淘宝ip地址查询类分享(利用淘宝ip库)
Jan 07 PHP
ThinkPHP通过AJAX返回JSON的两种实现方法
Dec 18 PHP
Yii2下session跨域名共存的解决方案
Feb 04 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
Feb 21 PHP
PHP 实现缩略图
Mar 09 PHP
PHP中多字节字符串操作实例详解
Aug 23 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
phpmail类发送邮件函数代码
2012/02/20 PHP
使用WordPress发送电子邮件的相关PHP函数用法解析
2015/12/15 PHP
php设计模式之建造器模式分析【星际争霸游戏案例】
2020/01/23 PHP
JS文本框不能输入空格验证方法
2013/03/19 Javascript
Node.js静态文件服务器改进版
2016/01/10 Javascript
input 禁止输入特殊字符的四种实现方式
2016/08/24 Javascript
纯js实现悬浮按钮组件
2016/12/17 Javascript
详解网站中图片日常使用以及优化手法
2017/01/09 Javascript
Javascript(es2016) import和require用法和区别详解
2017/08/11 Javascript
JS基于对象的特性实现去除数组中重复项功能详解
2017/11/17 Javascript
jQuery pagination分页示例详解
2018/10/23 jQuery
Node爬取大批量文件的方法示例
2019/06/28 Javascript
JavaScript的变量声明与声明提前用法实例分析
2019/11/26 Javascript
原生js实现二级联动菜单
2019/11/27 Javascript
javascript自定义右键菜单插件
2019/12/16 Javascript
35个Python编程小技巧
2014/04/01 Python
python实现2048小游戏
2015/03/30 Python
在Django中使用Sitemap的方法讲解
2015/07/22 Python
基于python的七种经典排序算法(推荐)
2016/12/08 Python
Python实战小程序利用matplotlib模块画图代码分享
2017/12/09 Python
python 输出所有大小写字母的方法
2019/01/02 Python
python判断无向图环是否存在的示例
2019/11/22 Python
Pytorch 扩展Tensor维度、压缩Tensor维度的方法
2020/09/09 Python
利用html5 canvas破解简单验证码及getImageData接口应用
2013/01/25 HTML / CSS
Lookfantastic西班牙官网:英国知名美妆购物网站
2018/06/13 全球购物
DOM和JQuery对象有什么区别
2016/11/11 面试题
大学生写自荐信的技巧
2014/01/08 职场文书
网络程序员自荐信
2014/01/25 职场文书
《回乡偶书》教学反思
2014/04/12 职场文书
中班上学期幼儿评语
2014/04/30 职场文书
反四风个人对照检查材料
2014/09/26 职场文书
公司副总经理岗位职责
2014/10/01 职场文书
2014年公务员转正工作总结
2014/11/07 职场文书
创建文明城市倡议书
2015/04/28 职场文书
紧急迫降观后感
2015/06/15 职场文书
JS 4个超级实用的小技巧 提升开发效率
2021/10/05 Javascript