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 相关文章推荐
完美解决令人抓狂的zend studio 7代码提示(content Assist)速度慢的问题
Jun 20 PHP
yii框架builder、update、delete使用方法
Apr 30 PHP
简介WordPress中用于获取首页和站点链接的PHP函数
Dec 17 PHP
PHP封装的MSSql操作类完整实例
May 26 PHP
PHP请求Socket接口测试实例
Aug 12 PHP
PHP编写简单的App接口
Aug 28 PHP
yii2使用GridView实现数据全选及批量删除按钮示例
Mar 01 PHP
对php 判断http还是https,以及获得当前url的方法详解
Jan 15 PHP
php如何把表单内容提交到数据库
Jul 08 PHP
laravel框架 api自定义全局异常处理方法
Oct 11 PHP
Laravel 自定命令以及生成文件的例子
Oct 23 PHP
php 使用 __call实现重载功能示例
Nov 18 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/10/02 PHP
PHP实现根据密码长度显示安全条
2017/07/04 PHP
php中yii框架实例用法
2020/12/22 PHP
javascript入门·图片对象(无刷新变换图片)\滚动图像
2007/10/01 Javascript
javascript的创建多行字符串的7种方法
2014/04/29 Javascript
js限制checkbox选中个数以限制六个为例
2014/07/15 Javascript
使用Promise解决多层异步调用的简单学习心得
2016/05/17 Javascript
实现JavaScript的组成----BOM和DOM详解
2016/05/18 Javascript
详解JavaScript中this关键字的用法
2016/05/26 Javascript
Javascript实现代码折叠功能
2016/08/25 Javascript
Windows环境下npm install 报错: operation not permitted, rename的解决方法
2016/09/26 Javascript
Bootstrap3 模态框使用实例
2017/02/22 Javascript
微信小程序 页面跳转如何实现传值
2017/04/05 Javascript
如何更好的编写js async函数
2018/05/13 Javascript
深入理解NodeJS 多进程和集群
2018/10/17 NodeJs
原生js实现五子棋游戏
2020/05/28 Javascript
JavaScript类的继承多种实现方法
2020/05/30 Javascript
Openlayers实现地图全屏显示
2020/09/28 Javascript
Python Web框架Pylons中使用MongoDB的例子
2013/12/03 Python
python登陆asp网站页面的实现代码
2015/01/14 Python
Python实现的径向基(RBF)神经网络示例
2018/02/06 Python
利用Python代码实现数据可视化的5种方法详解
2018/03/25 Python
TensorFlow损失函数专题详解
2018/04/26 Python
解决Pycharm无法import自己安装的第三方module问题
2018/05/18 Python
Linux 修改Python命令的方法示例
2018/12/03 Python
详解Python locals()的陷阱
2019/03/26 Python
python3实现表白神器
2019/04/09 Python
用pyqt5 给按钮设置图标和css样式的方法
2019/06/24 Python
django多文件上传,form提交,多对多外键保存的实例
2019/08/06 Python
python中使用paramiko模块并实现远程连接服务器执行上传下载功能
2020/02/29 Python
python多进程使用函数封装实例
2020/05/02 Python
使用css3匹配手机屏幕横竖状态
2014/01/27 HTML / CSS
英国户外装备商店:Ultimate Outdoors
2019/05/07 全球购物
酒店秘书求职信范文
2014/02/17 职场文书
大学自主招生自荐信范文
2014/02/26 职场文书
运动会口号16字
2014/06/07 职场文书