来自循环

时间:2017-06-29 12:20:02

标签: php arrays count

我无法想象之前没有被问到这一点,但是这里有。

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

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>';

3 个答案:

答案 0 :(得分: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 :(得分:1)

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

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

答案 2 :(得分:0)

尝试

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

$total = array_sum(array_map(function (array $gegevens) {
    return $gegevens['Value'];
}, $filtered));