对满足条件的列值求和

问题描述 投票:0回答:3

我无法想象以前没有人问过这个问题,但现在就这样了。

我从数组中提取了我的值。

foreach ($data as $gegevens) {
    $company = $gegevens['Name'];
    $value = $gegevens['Value'];
    
    if($company == 'Companyname'){
        echo $value;
    }
}   

只要名称匹配,就会回显字段

value
的各个值。效果很好,但现在我想知道这些值的总数是多少。所以实际上
sum

结果始终是数字;如此可数,但我不知道如何。 我已经看到可以对数组进行计数,但将这些值放入新数组中似乎有点过分了!

额外信息,因为总值应该位于同一个

foreach
循环中

$last_company = "";
echo'<table><tr><td width="250">Bedrijfsnaam</td><td width="150">Factuur</td><td width="150">Gefactureerd bedrag</td><td width="200">Saldo</td>';
$sum=0;
foreach ($data as $gegevens){
    $bedrijf = $gegevens['Naam'];
    $factuurnummer = $gegevens['Factuur'];
    $gefactureerd = $gegevens['Gefactureerd'];
    
    if($bedrijf == 'Companyname'){
        $sum += $gefactureerd;
    }
            
    if ($bedrijf == $last_company) {
        echo '<tr><td></td><td>'.$factuurnummer.'</td><td>'.$gefactureerd.'</td></tr>';
    } else {
        echo '<tr><td>'.$bedrijf.'</td><td>'.$factuurnummer.'</td><td>'.$gefactureerd.'</td><td>'.$sum.'</td></tr>';
        $last_company = $bedrijf;
    }
}   
echo'</table>';
php arrays multidimensional-array sum filtering
3个回答
4
投票
$sum = 0;
foreach ($data as $gegevens){
  $company = $gegevens['Name'];
  $value = $gegevens['Value'];

  if($company == 'Companyname'){
    $sum += $value;
  }
}   
echo $sum;

更新:如果您想要一个极其简单的解决方案:

$last_company = "";
echo'<table><tr><td width="250">Bedrijfsnaam</td><td width="150">Factuur</td><td width="150">Gefactureerd bedrag</td><td width="200">Saldo</td>';
$sum=0;
foreach ($data as $gegevens){
    if($bedrijf == 'Companyname'){
        $sum += $gefactureerd;
    }
}

foreach ($data as $gegevens){
    $bedrijf = $gegevens['Naam'];
    $factuurnummer = $gegevens['Factuur'];
    $gefactureerd = $gegevens['Gefactureerd'];

    if ($bedrijf == $last_company) {
        echo '<tr><td></td><td>'.$factuurnummer.'</td><td>'.$gefactureerd.'</td></tr>';
    } else {
        echo '<tr><td>'.$bedrijf.'</td><td>'.$factuurnummer.'</td><td>'.$gefactureerd.'</td><td>'.$sum.'</td></tr>';
        $last_company = $bedrijf;
    }
}   
echo'</table>';

1
投票
$sum = array();
foreach ($data as $gegevens){
  $company = $gegevens['Name'];
  $value = $gegevens['Value'];

  if($company == 'Companyname'){
    $sum [] = $value;
  }
}   
echo array_sum($sum);

0
投票

尝试

$filtered = array_filter($data, function (array $gegevens) {
    return $gegevens['Name'] === 'Companyname';
});

$total = array_sum(array_map(function (array $gegevens) {
    return $gegevens['Value'];
}, $filtered));
© www.soinside.com 2019 - 2024. All rights reserved.