PHP:由母亲catergory打印子类别项目组

时间:2016-02-13 13:27:33

标签: php html css

我必须创建一个menù,其中包含按母类别分组的子类别项目列表,并从产品表中获取这些值:

分类  

  • SubCategory
  •  
  • 子类别
  • 分类  

  • 子类别
  • 我明白了:

    UITouch

    <?php $query_cat = $db->prepare("SELECT * FROM products GROUP BY category ORDER BY category"); $query_cat->execute(); print '<li><strong>'. $category . '</strong></li>'; //Category while ($cat_row = $query_cat->fetch()) { //Subcategory print '<li><a href="/category/'. $cat_row['4'] .'">'. $cat_row['4'] .'</a></li>'; } ?> 表结构是

    products

    我如何获得类别名称并放在元素的顶部?

    感谢所有人提供的帮助。

    1 个答案:

    答案 0 :(得分:1)

    您可以使用array_group_by功能,如下所示

    $query_cat = $db->prepare("SELECT name, category, first_category FROM products ORDER BY category");
    $query_cat->execute();
    
    $rows = $query_cat->fetchAll(PDO::FETCH_ASSOC);
    $items = array_group_by($rows, 'first_category');
    
    foreach($items as $key => $value) {
        echo '<li><strong>' . $key . '</strong></li>';
        foreach($value as $row) {
            echo '<li><a href="/category/'.$row['category'].'">'.$row['category'].'</a></li>';
        }
    }
    

    array_group_by是一个函数,它通过在所有数组成员之间共享的一个键或一组键对数组进行分组。 一旦您将SQL数据检索为关联数组,就可以应用array_group_by函数获取一个数组数组,例如类别和子类别。

    array_group_by之后,这是$items数组的结构https://3v4l.org/5WkDH的结果示例

    此处的最终实例https://3v4l.org/cg9NN

    提示 Why is SELECT * considered harmful?请考虑在查询中不使用SELECT * FROM

    编辑如果您希望兼容 PHP低于5.3 ,则只需使用[]短数组表示法更改array()。这里的实例https://3v4l.org/0VUn7 (从PHP 4.3到最新测试)