php foreach-group,然后在“group”更改后执行某些操作

php foreach-group,然后在“group”更改后执行某些操作,php,foreach,Php,Foreach,考虑以下数据: make model color ---- ----- ----- Volskwagen Golf Red Volskwagen Golf Green Volskwagen Golf Blue Toyota Corolla Red Toyota Corolla Green Toyota

考虑以下数据:

make            model       color
----            -----       -----
Volskwagen      Golf        Red
Volskwagen      Golf        Green
Volskwagen      Golf        Blue
Toyota          Corolla     Red
Toyota          Corolla     Green
Toyota          Corolla     Blue
Toyota          Corolla     Black
以下代码将贯穿此数据,并有效地对车辆品牌和型号进行分组:

$sql = "SELECT make, model, color FROM t_cars ORDER BY make, model;";
$rows = $db->query($sql);

$group = '';
foreach ($rows as $row) {
    if ($group != $row['make'].$row['model']) {
        echo $row['color'] . '<br />';
        $group = $row['make'].$row['model'];
    }
}
我希望能够在foreach中输出以下内容:

'There are 3 Volkswagen Golfs. The colors are Red, Green, Blue' 
'There are 4 Toyota Corollas. The colors are Red, Green, Blue, Black'

我的实际代码要比这复杂得多,但如果我正确地理解了这一逻辑,我就可以了。唯一的限制是,我需要在包含foreach语句的示例中使用所有这些语句。

如果您使用的是mysql,并且愿意更改sql查询,则可以使用此查询来帮助您

从数据库中选择make,model,group_concatcolor separator','作为颜色,countcolor作为颜色计数 按品牌、型号分组

好的

这将给您留下一个查询,该查询将返回:

[Volskwagen][Golf][红、绿、蓝][3]

[丰田][卡罗拉][红,绿,蓝,黑][4]

然后,如果colorcount>1,则可以向高尔夫添加s。 可以对逗号进行替换,在每个逗号后添加空格。
可以用和替换颜色中的最后一个逗号。

这将需要第二个foreach,但为什么不将make作为键保存在关联数组中,该键引用另一个关联数组,而模型作为键引用包含可能颜色的数组呢。我想打个例子,但我正在打电话。一个foreach循环背后的原因是什么?
'There are 3 Volkswagen Golfs. The colors are Red, Green, Blue' 
'There are 4 Toyota Corollas. The colors are Red, Green, Blue, Black'