我有一个数据库,其中保存了所使用的每项服务的大小。在我的表格中,第一列是name_service
,第二列是size
。所以我需要做的是确定每个服务的总大小,知道具有相同服务名称的行可能会重复!
$serviceCounts=array();
while ($row=mysqli_fetch_assoc($result))
{
$size=$row['size'];
$service=$row['name_service'];
}
答案 0 :(得分:2)
SQL解决方案 查看@Adder解决方案。
PHP解决方案
循环之前:
$services = array();
循环内部:
if(array_key_exists($row['name_service'] , $services))
{
$services[$row['name_service'] += $row['size'];
}
else
{
$services[$row['name_service'] = $row['size'];
}
你基本上使用一个名为services
的新数组并检查循环if
此服务是否已在数组中设置。
如果是 - 添加新行的大小,
否则将服务名称添加为新元素并设置其大小。
答案 1 :(得分:1)
使用聚合mysql功能:
SELECT sum(size) as size, name_service FROM services GROUP BY name_service;
未经测试,您可能需要重命名sum(size) as sum_size
。
答案 2 :(得分:1)
$serviceCounts=array();
while ( $row = mysqli_fetch_assoc($result) )
{
$size=$row['size'];
$service=$row['name_service'];
if (isset($serviceCounts[ $service ])) {
$serviceCounts[$service] += $size;
} else {
$serviceCounts[$service] = $size;
}
}
然后您可以执行此操作以打印出服务名称和大小:
foreach ($serviceCounts as $name=>$size) {
echo "$name: $size\n";
}
答案 3 :(得分:0)
你的意思是那样的吗?
$serviceCounts=array();
while ($row=mysqli_fetch_assoc($result) {
$size=$row['size'];
$service=$row['name_service'];
if (isset($serviceCounts[$service])) {
$serviceCounts[$service]+=$size;
} else {
$serviceCounts[$service]=$size;
}
}
print_r($serviceCounts);