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'