将数据库结果分类

时间:2015-09-29 17:13:40

标签: php html mysql pdo

我有一个MySQL数据库,其中包含一个名为product的表。列是id,product_name,price,category。我将PDO与fetchAll一起使用并按类别排序。我想为每个类别分组创建HTML表。在过去,我总是这样做:

$category = "";
$html = "";
foreach($results as $row){
    if ($row['category'] != $category){
        if ($category != "")
            $html .= "</table>";
        $category = $row['category'];
        $html .= "<table>";
     }
     //code for table row here
}
$html .= "</table>";

但是,我想知道是否有不同的方法来执行此操作,例如按类别拆分数组并在每个子数组上运行foreach。这可能吗?

修改

为了进一步解释,我正在寻找一些不那么麻烦的东西。我不想检查以前的类别是什么(或者它是否为空)。我不想两次指定结束</table>标记。如果一个数组可以按类别拆分,那么只需在每个类别上运行一个嵌套循环就可以解决这些问题。

编辑2:

出于某种原因,这个问题被列为基于意见的。有人可以告诉我关于我的问题的意见是什么吗?然后我会尝试改进它。

1 个答案:

答案 0 :(得分:2)

如果你想跳过整个类别检查,那么你可以创建一个新数组。

$productCategories = array();
foreach ($results as $result) {
    $productCategories[$result['cat']][] = $result;
}

foreach ($productCategories as $productCategory) {
    // Start table
    foreach ($productCategory as $product) {
        // Render product
    }
    // End table
}