我有一个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:
出于某种原因,这个问题被列为基于意见的。有人可以告诉我关于我的问题的意见是什么吗?然后我会尝试改进它。
答案 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
}