zoukankan      html  css  js  c++  java
  • PHP 商城无限极分类



    无限极分类,用的是递归,在外部调用fen()方法即可
                    index是刚开始寻找的顶级分类,suo是为了在前端展示的时候缩进
        public  function  fen($index=0,$suo=0){
    
    
    
            一个数组用来返回的
                 $t=[];
    
                 这是查询数据库的所有内容
            foreach($this->select() as $key=>$value)
            {
    
                  
                if($value["parent_id"]==$p){
          如果说父级ID是刚开始默认的顶级分类的话,
                 就给这个顶级分类的缩进设置为0
                    $value["suo"]=$suo;
    
    
    
                      然后就是添加这个数组进刚开始定义的数组,下面两种添加方法都可以,我觉得push看的更加明白,
                   //   $t[]=$value;
                    array_push($t,$value);
    
    
                     然后就是递归了,传进去的第一个就是要查找的父级ID,就是当前的这个vlaue的cat_id,找出他下面的子分类,然后都是子分类缩进当然要加一个了.
                     为什么用合并呢,如果用push的话,如果这个分类没有子分类那么会添加进来一个空数组,
                      用合并的话,就会自动屏蔽空数组
    
                 $t=array_merge($t,$this->fen($value["cat_id"],$v+1));
    
                 //array_push($t,$this->fen($value["cat_id"],$v+1));
                }
            }
    
              最后循环结束,再把查到的递归进来的每个方法中的定义的数组给抛回去
            return $t;
    
    
        }
    
    
    
     
    我用的是thinkPHP3.2 
    我是把递归的方法写在模型里面的,
    $this->assign("list",$this->gm->fen());
    $this->display("type/catlist");

    在Html里面,没有li的左外边距就是缩进的*40就OK,效果就出来了
    <foreach name="list" item="item"> <li style="margin-left:{$item[suo]*40}px"> <span class="wl_suo">{$item.v}</span> {$item.cat_name} <span>上机ID{$item.parent_id}</span></li> </foreach>
    
    
    
    但是后台的递归还是不好的方法,好的方法还是把这些数组用json的格式传给前台的js处理,
    这样的效率才会高









  • 相关阅读:
    查詢一個表中的所有字段,一个表的结构
    二月份工作總結
    导出excel [原创]
    一个it老总对于新人的一点建议
    命名空间的别名
    mssql 格式化时间 [转]
    开发人员一定要加入收藏夹的网站
    sql 导出/入Excel
    hibernate中hbm文件中inverse功能
    详细展示Asp.net页面的生命周期[转]
  • 原文地址:https://www.cnblogs.com/wlphp/p/8544604.html
Copyright © 2011-2022 走看看