限时免费试用:欢迎注册 api.bigmodel.org ,快速体验大模型 API 接入服务。
当前位置:首页 >开发者 >PHP笔记 >PHP基础

无级分类Demo

分类:PHP基础时间:2019-01-12浏览:3000
id pid controller
/**
     * 加载视图
     * @return [type] [description]
     */
    public function goods_group()
    {    
        // 从数据库获取所有分类记录
      $goods_group = \App\Goods_group::orderBy('sort','desc')->get();
        // 将分类以及子分类整理排序
      $goods_group = $this->_treeNode($goods_group->toArray(),0);
        // 加载视图及分配数据
      return view("admin/goods/goods_group",compact('goods_group'));      
    }

    /**
     * 整理排序所有分类
     * @param  array   $data       从数据库获取的分类
     * @param  integer $parentId 父id,默认一级分类
     * @return array 
     */
    private function _treeNode($data,$parentId = 0)
    {
        // 用于保存整理好的分类节点
        $node = [];
        // 循环所有分类
        foreach ($data as $key => $value) {
            // 如果当前分类的父id等于要寻找的父id则写入$node数组,并寻找当前分类id下的所有子分类
            if($parentId == $value ['pid']) {
                $node [$key] = $value;
                $node [$key] ['childer'] = $this->_treeNode($data,$value ['id']);
            }
        }
        return $node;
    } 
view
        @foreach($goods_group as $k=>$vo)
              
                {{$vo['id']}}
                {{$vo['pid']}}
                {{$vo['name']}}
                子类
                
                {{$vo['sort']}}
                {{$vo['status']}}
                  
              
              @if(!empty($vo['childer']))
                {{get_childer_node($vo['childer'])}}
              @endif
            @endforeach
function
/**
 * 产品分类获取子节点
 * @param  array  $data [description]
 * @return [type]       [description]
 */
function get_childer_node($data = [])
{
    // 记录该分类的深度
    static $callNum = 1;
    $fg = str_repeat('|----',$callNum); 
    if(empty($data)) {
        return;        
    }
    foreach ($data as $key => $vo) {
        
        echo "
                
                    {$vo['id']}
                    {$vo['pid']}
                    {$fg}{$vo['name']}
                    子类
                    
                    {$vo['sort']}
                    {$vo['status']}
                      
                
            ";
        // 如果该分类的依旧有子分类则再次遍历输出 
        if(!empty($vo ['childer'])) {
            $callNum ++;
            get_childer_node($vo ['childer']);
        }
        // 重置分类层级
        $callNum = 1;
    }
}
本站文章如未注明出处均为原创,转载请注明出处,如有侵权请邮件联系站长。
0/500
Share your thoughts respectfully.