zoukankan      html  css  js  c++  java
  • PHP无限级分类

    一、数据格式
    $arr = Array
    (
        [0] => Array
            (
                [cat_id] => 1
                [cat_name] => 关于我们
                [sort_order] => 0
                [parent_id] => 0
            )
    
        [1] => Array
            (
                [cat_id] => 2
                [cat_name] => 站内公告
                [sort_order] => 0
                [parent_id] => 0
            )
    
        [2] => Array
            (
                [cat_id] => 3
                [cat_name] => 促销咨询
                [sort_order] => 0
                [parent_id] => 0
            )
    
        [3] => Array
            (
                [cat_id] => 4
                [cat_name] => 售前答疑
                [sort_order] => 0
                [parent_id] => 2
            )
    
        [4] => Array
            (
                [cat_id] => 5
                [cat_name] => 售后答疑
                [sort_order] => 0
                [parent_id] => 2
            )
    
        [5] => Array
            (
                [cat_id] => 6
                [cat_name] => 企业文化
                [sort_order] => 0
                [parent_id] => 0
            )
    
        [6] => Array
            (
                [cat_id] => 11
                [cat_name] => 企业发展历程
                [sort_order] => 0
                [parent_id] => 1
            )
    
        [7] => Array
            (
                [cat_id] => 12
                [cat_name] => 首页公告
                [sort_order] => 0
                [parent_id] => 2
            )
    
    )
    
    二、无限级分类实现
    
    class ArticleCat{
        //筛选分类数据
        public function getCatTree($arr,$id = 0,$lev = 0) {
            $tree = array();
            
            foreach ($arr as $v){
                if ($v['parent_id'] == $id){
                    $v['lev'] = $lev;
                    $tree[] = $v;
                    
                    $tree = array_merge($tree,$this->getCatTree($arr,$v['cat_id'],$lev+1));
                }
            }
            return $tree;
        }
    
    
    }
    
    三、调用方式
    $catModel = new ArticleCat();
    $catList = $catModel->getCatTree($arr);
    
    四、返回数据格式
    $catList = Array
    (
        [0] => Array
            (
                [cat_id] => 1
                [cat_name] => 关于我们
                [sort_order] => 0
                [parent_id] => 0
                [lev] => 0
            )
    
        [1] => Array
            (
                [cat_id] => 11
                [cat_name] => 企业发展历程
                [sort_order] => 0
                [parent_id] => 1
                [lev] => 1
            )
    
        [2] => Array
            (
                [cat_id] => 2
                [cat_name] => 站内公告
                [sort_order] => 0
                [parent_id] => 0
                [lev] => 0
            )
    
        [3] => Array
            (
                [cat_id] => 4
                [cat_name] => 售前答疑
                [sort_order] => 0
                [parent_id] => 2
                [lev] => 1
            )
    
        [4] => Array
            (
                [cat_id] => 5
                [cat_name] => 售后答疑
                [sort_order] => 0
                [parent_id] => 2
                [lev] => 1
            )
    
        [5] => Array
            (
                [cat_id] => 12
                [cat_name] => 首页公告
                [sort_order] => 0
                [parent_id] => 2
                [lev] => 1
            )
    
        [6] => Array
            (
                [cat_id] => 3
                [cat_name] => 促销咨询
                [sort_order] => 0
                [parent_id] => 0
                [lev] => 0
            )
    
        [7] => Array
            (
                [cat_id] => 6
                [cat_name] => 企业文化
                [sort_order] => 0
                [parent_id] => 0
                [lev] => 0
            )
    
    )
    
    五、在前端直接遍历的效果(此处以ThinkPHP模板为例)
    <label>文章分类</label>
    <select name='cat_id'style="345px; height:32px; line-height:32px; border-top:solid 1px #c3ab7d; border-left:solid 1px #c3ab7d; border-right:solid 1px #e7d5ba; border-bottom:solid 1px #e7d5ba; background: rgba(0, 0, 0, 0)  repeat-x scroll 0 0;">
    <volist name="catList" id="vo">
    	<option value="<{$vo.cat_id}>"><?php echo str_repeat('    ',$vo['lev']);?><{$vo.cat_name}></option>
    </volist>
    </select>
    
    
    	   
    
     
  • 相关阅读:
    默认使用什么序列化框架,你知道的还有哪些?
    一般使用什么注册中心?还有别的选择吗?
    Dubbo 的整体架构设计有哪些分层?
    Java 中是如何支持正则表达式操作的?
    Dubbo 集群容错有几种方案?
    Dubbo 推荐用什么协议?
    说说核心的配置有哪些?
    Dubbo 如何优雅停机?
    Dubbo 必须依赖的包有哪些?
    服务上线怎么兼容旧版本?
  • 原文地址:https://www.cnblogs.com/IT-Crowd/p/6407840.html
Copyright © 2011-2022 走看看