MySQL PHP填充一个空数组

MySQL PHP填充一个空数组,php,mysql,arrays,Php,Mysql,Arrays,我有一个数据库,其中保存了所使用的每个服务的大小。在我的表中,第一列是name_service,第二列是size。因此,我需要做的是输入每个服务的总大小,知道具有相同服务名称的行可能会重复 $serviceCounts=array(); while ($row=mysqli_fetch_assoc($result)) { $size=$row['size']; $service=$row['name_service']; } SQL解决方案 查看@Adder解决方案 PH

我有一个数据库,其中保存了所使用的每个服务的大小。在我的表中,第一列是name_service,第二列是size。因此,我需要做的是输入每个服务的总大小,知道具有相同服务名称的行可能会重复

$serviceCounts=array();

while ($row=mysqli_fetch_assoc($result))
{
    $size=$row['size'];
    $service=$row['name_service'];  
}
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 = array();
if(array_key_exists($row['name_service'] , $services))
{
  $services[$row['name_service'] += $row['size'];
}
else
{
  $services[$row['name_service'] = $row['size'];
}
您基本上使用了一个名为services的新数组,并在 此服务是否已在阵列中设置。 如果是-将新行的大小添加到其中,
否则,将服务名称添加为新元素并设置其大小

使用聚合mysql功能:

SELECT sum(size) as size, name_service FROM services GROUP BY name_service;
未经测试,您可能必须将sumsize重命名为sum_size

然后,您可以执行此操作以打印出服务名称和大小:

foreach ($serviceCounts as $name=>$size) {
    echo "$name: $size\n";
}

你的意思是这样的吗

$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);

你的问题很不清楚。你想要实现什么?不清楚?但我确实得到了我想要的确切答案。显然,您需要从$row['name_service']中删除除字母数字字符和下划线以外的任何字符,以使变量名有效,但是+1哦,不,只是修复查询!这完全是错误的unnecessary@STTLCU您是对的,将添加此选项。PhilCross-说得好,这是我做的一个假设。@OfirBaruch我知道你的意思,除了我不能用一个查询来做这件事之外,我有一个特殊的数据库,它至少有144个表,没有键来做关节,所以用循环形成另一个查询将花费更多的时间。这!这就是答案。真的,伙计们,PHP并不总是答案。哦,不,只是修复查询!这完全是错误的unnecessary@Jon谢谢知道如何将结果放入图形中吗?@STTLCU我知道你的意思,只是我不能用查询来实现这一点,我有一个特殊的数据库,其中至少有144个表,没有键来进行连接,因此使用循环形成另一个查询将花费比这更多的时间。你不需要使用键来进行连接@Falcon@Falcon在网页上?也许你可以看看谷歌图表哦,该死的,不,只是修正一下查询!这是完全没有必要的