【问题标题】:Separating database results into categories将数据库结果分类
【发布时间】:2015-10-04 01:23:29
【问题描述】:

我有一个 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。这可能吗?

编辑:

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

编辑 2:

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

【问题讨论】:

  • 我已经更新了我的问题以进一步解释我在寻找什么。
  • 有人能解释一下为什么我的问题是“基于意见的”吗?

标签: php html mysql pdo


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-26
    • 2020-05-06
    • 2012-09-08
    • 1970-01-01
    • 1970-01-01
    • 2014-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多