电商导航无限极分类

简单版的PHP生成无限极分类代码。其中包括了数据库设计、以及输出分类HTML代码。

 SQL文件表Class,c_id主键自增,c_name分类名称,c_status分类状态(这里没有用到),c_parent_id父级ID

很显然一级菜单分别为:服装,食品,家具,孕婴,化妆品,它们的c_parent_id都为0,没有父级。

其他字段c_parent_id所指的值是上一级菜单的c_id,进行分类,综合同理!

废话不多说,相信都懂。实在不懂就没办法了!

直接上代码

1、首先查询出来class表所有数据

array(24) {
  [0]=>
  array(4) {
    ["c_id"]=>
    int(1)
    ["c_name"]=>
    string(6) "服饰"
    ["c_status"]=>
    int(1)
    ["c_parent_id"]=>
    int(0)
  }
  [1]=>
  array(4) {
    ["c_id"]=>
    int(2)
    ["c_name"]=>
    string(6) "食品"
    ["c_status"]=>
    int(1)
    ["c_parent_id"]=>
    int(0)
  }
  [2]=>
  array(4) {
    ["c_id"]=>
    int(3)
    ["c_name"]=>
    string(6) "家居"
    ["c_status"]=>
    int(1)
    ["c_parent_id"]=>
    int(0)
  }
  [3]=>
  array(4) {
    ["c_id"]=>
    int(4)
    ["c_name"]=>
    string(6) "孕婴"
    ["c_status"]=>
    int(1)
    ["c_parent_id"]=>
    int(0)
  }
  [4]=>
  array(4) {
    ["c_id"]=>
    int(5)
    ["c_name"]=>
    string(9) "化妆品"
    ["c_status"]=>
    int(1)
    ["c_parent_id"]=>
    int(0)
  }
  [5]=>
  array(4) {
    ["c_id"]=>
    int(8)
    ["c_name"]=>
    string(6) "男装"
    ["c_status"]=>
    NULL
    ["c_parent_id"]=>
    int(1)
  }
  [6]=>
  array(4) {
    ["c_id"]=>
    int(9)
    ["c_name"]=>
    string(6) "女装"
    ["c_status"]=>
    NULL
    ["c_parent_id"]=>
    int(1)
  }
  [7]=>
  array(4) {
    ["c_id"]=>
    int(10)
    ["c_name"]=>
    string(6) "童装"
    ["c_status"]=>
    NULL
    ["c_parent_id"]=>
    int(1)
  }
  [8]=>
  array(4) {
    ["c_id"]=>
    int(11)
    ["c_name"]=>
    string(6) "内衣"
    ["c_status"]=>
    NULL
    ["c_parent_id"]=>
    int(1)
  }
  [9]=>
  array(4) {
    ["c_id"]=>
    int(12)
    ["c_name"]=>
    string(6) "鞋子"
    ["c_status"]=>
    NULL
    ["c_parent_id"]=>
    int(1)
  }
  [10]=>
  array(4) {
    ["c_id"]=>
    int(13)
    ["c_name"]=>
    string(6) "干果"
    ["c_status"]=>
    NULL
    ["c_parent_id"]=>
    int(2)
  }
  [11]=>
  array(4) {
    ["c_id"]=>
    int(14)
    ["c_name"]=>
    string(6) "零食"
    ["c_status"]=>
    NULL
    ["c_parent_id"]=>
    int(2)
  }
  [12]=>
  array(4) {
    ["c_id"]=>
    int(15)
    ["c_name"]=>
    string(6) "特产"
    ["c_status"]=>
    NULL
    ["c_parent_id"]=>
    int(2)
  }
  [13]=>
  array(4) {
    ["c_id"]=>
    int(16)
    ["c_name"]=>
    string(6) "生鲜"
    ["c_status"]=>
    NULL
    ["c_parent_id"]=>
    int(2)
  }
  [14]=>
  array(4) {
    ["c_id"]=>
    int(17)
    ["c_name"]=>
    string(6) "饮品"
    ["c_status"]=>
    NULL
    ["c_parent_id"]=>
    int(2)
  }
  [15]=>
  array(4) {
    ["c_id"]=>
    int(18)
    ["c_name"]=>
    string(6) "家具"
    ["c_status"]=>
    NULL
    ["c_parent_id"]=>
    int(3)
  }
  [16]=>
  array(4) {
    ["c_id"]=>
    int(19)
    ["c_name"]=>
    string(6) "家纺"
    ["c_status"]=>
    NULL
    ["c_parent_id"]=>
    int(3)
  }
  [17]=>
  array(4) {
    ["c_id"]=>
    int(20)
    ["c_name"]=>
    string(6) "奶粉"
    ["c_status"]=>
    NULL
    ["c_parent_id"]=>
    int(4)
  }
  [18]=>
  array(4) {
    ["c_id"]=>
    int(21)
    ["c_name"]=>
    string(6) "玩具"
    ["c_status"]=>
    NULL
    ["c_parent_id"]=>
    int(4)
  }
  [19]=>
  array(4) {
    ["c_id"]=>
    int(22)
    ["c_name"]=>
    string(6) "用品"
    ["c_status"]=>
    NULL
    ["c_parent_id"]=>
    int(4)
  }
  [20]=>
  array(4) {
    ["c_id"]=>
    int(23)
    ["c_name"]=>
    string(6) "口红"
    ["c_status"]=>
    NULL
    ["c_parent_id"]=>
    int(5)
  }
  [21]=>
  array(4) {
    ["c_id"]=>
    int(24)
    ["c_name"]=>
    string(6) "面膜"
    ["c_status"]=>
    NULL
    ["c_parent_id"]=>
    int(5)
  }
  [22]=>
  array(4) {
    ["c_id"]=>
    int(25)
    ["c_name"]=>
    string(6) "保湿"
    ["c_status"]=>
    NULL
    ["c_parent_id"]=>
    int(5)
  }
  [23]=>
  array(4) {
    ["c_id"]=>
    int(26)
    ["c_name"]=>
    string(6) "卸妆"
    ["c_status"]=>
    NULL
    ["c_parent_id"]=>
    int(5)
  }
}

现在只是查询出来了当前的所以分类

接下来就是调用无限极分类方法(传值)(记得将查询出来的所有分类传过去)进行无限极分类处理层级

例如:

public function Index()
    {
        //查询商品分类
        $class = $this->goodsService->getClass();
        //调用无限极分类方法getTrees
        $class_query = $this->goodsService->getTrees($class);
        //可以打印看一下
        var_dump($class_query);
    }  

//无限极分类
    public function getTrees($data,$pid=0){
        $arr = [];
        foreach ($data as $k =>$v)
        {
            if ($pid==$v->c_parent_id)
            {
                $arr[$k] = $v;
                //这里将子分类存放在父级分类下给数组定义一个son存放子分类
                $arr[$k]['son'] = $this->getTrees($data,$v->c_id);
            }
        }
        return $arr;
    }      

打印效果如下

array(5) {
  [0]=>
  array(5) {
    ["c_id"]=>
    int(1)
    ["c_name"]=>
    string(6) "服饰"
    ["c_status"]=>
    int(1)
    ["c_parent_id"]=>
    int(0)
    ["son"]=>
    array(5) {
      [5]=>
      array(5) {
        ["c_id"]=>
        int(8)
        ["c_name"]=>
        string(6) "男装"
        ["c_status"]=>
        NULL
        ["c_parent_id"]=>
        int(1)
        ["son"]=>
        array(0) {
        }
      }
      [6]=>
      array(5) {
        ["c_id"]=>
        int(9)
        ["c_name"]=>
        string(6) "女装"
        ["c_status"]=>
        NULL
        ["c_parent_id"]=>
        int(1)
        ["son"]=>
        array(0) {
        }
      }
      [7]=>
      array(5) {
        ["c_id"]=>
        int(10)
        ["c_name"]=>
        string(6) "童装"
        ["c_status"]=>
        NULL
        ["c_parent_id"]=>
        int(1)
        ["son"]=>
        array(0) {
        }
      }
      [8]=>
      array(5) {
        ["c_id"]=>
        int(11)
        ["c_name"]=>
        string(6) "内衣"
        ["c_status"]=>
        NULL
        ["c_parent_id"]=>
        int(1)
        ["son"]=>
        array(0) {
        }
      }
      [9]=>
      array(5) {
        ["c_id"]=>
        int(12)
        ["c_name"]=>
        string(6) "鞋子"
        ["c_status"]=>
        NULL
        ["c_parent_id"]=>
        int(1)
        ["son"]=>
        array(0) {
        }
      }
    }
  }
  [1]=>
  array(5) {
    ["c_id"]=>
    int(2)
    ["c_name"]=>
    string(6) "食品"
    ["c_status"]=>
    int(1)
    ["c_parent_id"]=>
    int(0)
    ["son"]=>
    array(5) {
      [10]=>
      array(5) {
        ["c_id"]=>
        int(13)
        ["c_name"]=>
        string(6) "干果"
        ["c_status"]=>
        NULL
        ["c_parent_id"]=>
        int(2)
        ["son"]=>
        array(0) {
        }
      }
      [11]=>
      array(5) {
        ["c_id"]=>
        int(14)
        ["c_name"]=>
        string(6) "零食"
        ["c_status"]=>
        NULL
        ["c_parent_id"]=>
        int(2)
        ["son"]=>
        array(0) {
        }
      }
      [12]=>
      array(5) {
        ["c_id"]=>
        int(15)
        ["c_name"]=>
        string(6) "特产"
        ["c_status"]=>
        NULL
        ["c_parent_id"]=>
        int(2)
        ["son"]=>
        array(0) {
        }
      }
      [13]=>
      array(5) {
        ["c_id"]=>
        int(16)
        ["c_name"]=>
        string(6) "生鲜"
        ["c_status"]=>
        NULL
        ["c_parent_id"]=>
        int(2)
        ["son"]=>
        array(0) {
        }
      }
      [14]=>
      array(5) {
        ["c_id"]=>
        int(17)
        ["c_name"]=>
        string(6) "饮品"
        ["c_status"]=>
        NULL
        ["c_parent_id"]=>
        int(2)
        ["son"]=>
        array(0) {
        }
      }
    }
  }
  [2]=>
  array(5) {
    ["c_id"]=>
    int(3)
    ["c_name"]=>
    string(6) "家居"
    ["c_status"]=>
    int(1)
    ["c_parent_id"]=>
    int(0)
    ["son"]=>
    array(2) {
      [15]=>
      array(5) {
        ["c_id"]=>
        int(18)
        ["c_name"]=>
        string(6) "家具"
        ["c_status"]=>
        NULL
        ["c_parent_id"]=>
        int(3)
        ["son"]=>
        array(0) {
        }
      }
      [16]=>
      array(5) {
        ["c_id"]=>
        int(19)
        ["c_name"]=>
        string(6) "家纺"
        ["c_status"]=>
        NULL
        ["c_parent_id"]=>
        int(3)
        ["son"]=>
        array(0) {
        }
      }
    }
  }
  [3]=>
  array(5) {
    ["c_id"]=>
    int(4)
    ["c_name"]=>
    string(6) "孕婴"
    ["c_status"]=>
    int(1)
    ["c_parent_id"]=>
    int(0)
    ["son"]=>
    array(3) {
      [17]=>
      array(5) {
        ["c_id"]=>
        int(20)
        ["c_name"]=>
        string(6) "奶粉"
        ["c_status"]=>
        NULL
        ["c_parent_id"]=>
        int(4)
        ["son"]=>
        array(0) {
        }
      }
      [18]=>
      array(5) {
        ["c_id"]=>
        int(21)
        ["c_name"]=>
        string(6) "玩具"
        ["c_status"]=>
        NULL
        ["c_parent_id"]=>
        int(4)
        ["son"]=>
        array(0) {
        }
      }
      [19]=>
      array(5) {
        ["c_id"]=>
        int(22)
        ["c_name"]=>
        string(6) "用品"
        ["c_status"]=>
        NULL
        ["c_parent_id"]=>
        int(4)
        ["son"]=>
        array(0) {
        }
      }
    }
  }
  [4]=>
  array(5) {
    ["c_id"]=>
    int(5)
    ["c_name"]=>
    string(9) "化妆品"
    ["c_status"]=>
    int(1)
    ["c_parent_id"]=>
    int(0)
    ["son"]=>
    array(4) {
      [20]=>
      array(5) {
        ["c_id"]=>
        int(23)
        ["c_name"]=>
        string(6) "口红"
        ["c_status"]=>
        NULL
        ["c_parent_id"]=>
        int(5)
        ["son"]=>
        array(0) {
        }
      }
      [21]=>
      array(5) {
        ["c_id"]=>
        int(24)
        ["c_name"]=>
        string(6) "面膜"
        ["c_status"]=>
        NULL
        ["c_parent_id"]=>
        int(5)
        ["son"]=>
        array(0) {
        }
      }
      [22]=>
      array(5) {
        ["c_id"]=>
        int(25)
        ["c_name"]=>
        string(6) "保湿"
        ["c_status"]=>
        NULL
        ["c_parent_id"]=>
        int(5)
        ["son"]=>
        array(0) {
        }
      }
      [23]=>
      array(5) {
        ["c_id"]=>
        int(26)
        ["c_name"]=>
        string(6) "卸妆"
        ["c_status"]=>
        NULL
        ["c_parent_id"]=>
        int(5)
        ["son"]=>
        array(0) {
        }
      }
    }
  }
}

 此时无限极分类基本已经完成,前台HTML渲染

博主正在用laravel,故foreach带@循环对象,大家可以忽略@

<!--左侧栏目开始-->
     <!--此时循环一级分类--> @foreach($class as $k => $v) <div class="menu_title">{{$v->c_name}}</div>
       <!--此时循环子分类--> @foreach($v->son as $key => $value) <a href="Product_List.html">{{$value->c_name}}</a> @endforeach @endforeach

效果如图

PHP简单的无限极分类结束。

猜你喜欢

转载自www.cnblogs.com/T8888/p/11027866.html