tp5递归 无限级分类详解
发布:smiling 来源: PHP粉丝网 添加日期:2022-01-10 17:24:59 浏览: 评论:0
今天小编就为大家分享一篇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 (!emptyempty($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>
Tags: tp5递归 tp5无限级分类

推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)