tp5递归 无限级分类详解
时间:2022-07-27
本文章向大家介绍tp5递归 无限级分类详解,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
在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 appadminController;
use thinkDb;
use thinkController;
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递归 无限级分类详解就是小编分享给大家的全部内容了,希望能给大家一个参考。
- Codeforces 839C Journey【DFS】
- Facebook的漏洞可以让攻击者在分分钟内重置用户账户密码
- 【Java学习笔记之十七】Java中普通代码块,构造代码块,静态代码块区别及代码示例分析
- 【机器学习笔记之六】Bagging 简述
- 洛谷 P1553 数字反转(升级版)【字符串+STL stack】
- C# 实现发送手机短信
- 软件测试人员必须掌握的Linux基本命令
- 【机器学习笔记之五】用ARIMA模型做需求预测用ARIMA模型做需求预测
- Capturing Packets in Linux at a Speed of Millions of PPS
- 【机器学习笔记之四】Adaboost 算法
- 【Java学习笔记之十九】super在Java继承中的用法小结
- 【Java学习笔记之二十一】抽象类在Java继承中的用法小结
- 【Java学习笔记之二十】final关键字在Java继承中的用法小结
- 基于Windows下python环境变量配置
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法