我试图做的是从表中选择*,然后获取列中重复行的计数,但也有与结果关联的另一列(make)。
例:
期望产出:
制造模型 Qty
福特福克斯3
福特嘉年华5
福特蒙迪欧1
宝马M3 1
奥迪A4 2
奥迪A3 4
当前产出:
模型 Qty
重点3
嘉年华5
蒙迪奥1
M3 1
A4 2
A3 4
我的代码:
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
$modelArray = [];
foreach ($rows as $row) {
$modelArray[] = $row['model'];
}
$result = array_count_values($modelArray);
foreach ($result as $model=>$qty) {
echo $model." ".$qty;
}我不知道如何使用array_count_values()函数在我的结果中包括'make‘列。
我想我可能做错了,因为这似乎是一个相当常见的任务,但我找不到任何关于如何这样做的信息。
如能提供任何帮助,将不胜感激。
发布于 2017-09-20 10:02:52
我要问的是,您要做的是一个GROUP BY语句。这里
您当前的查询是SELECT make, model FROM table。
然后使用array_count_values对重复数据进行计数。我认为您需要使用这样的GROUP语句来更改查询。
SELECT make, model, COUNT(1) AS qty FROM table GROUP BY make, model使用该查询,可以使用以下代码回显结果。
foreach ($rows as $row) {
echo $row['make'] . " " . $row['model'] . " " . $row['qty'];
}发布于 2017-09-20 09:59:22
尝尝这个
<?php
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
$modelArray = [];
$makes = []
foreach ($rows as $row) {
$modelArray[] = $row['model'];
$makes[$row['model']]=$row['make'];
}
$result = array_count_values($modelArray);
foreach ($result as $model=>$qty) {
echo $makes[$model]." ".$model." ".$qty;
}
?>https://stackoverflow.com/questions/46318661
复制相似问题