如何在重复字段中只汇总PHP中foreach循环的单个值?

时间:2017-03-02 12:25:48

标签: php arrays sum key

我有这个循环

foreach($sudentname as $key => $v){ 
    echo 'Student Name : '.$v.'<br/>';
    echo 'Admission Number : '.$admissionnmbr[$key].'<br/>';
    echo 'Payment Type : '.$purpose[$key].'<br/>';
    echo 'Amount : '.$amount[$key].'<br/>';
    echo 'Grade : '.$grade[$key].'<br/>';
}

我使用它从一些重复的字段中获取值。

我必须得到金额的总和以获得总数。

假设有人重复重复部分三次。 然后金额将有3次,有三个不同的值。 例如:10,20,30

计算我希望SUM值的总和..并显示循环的外侧。

怎么做?

如果我想要整个数组,我可以使用array_sum

来完成

3 个答案:

答案 0 :(得分:2)

您需要将它与array_map()耦合以首先选择f_count列:

array_sum(array_map(function($item) { 
    return $item['yourkey']; 
}, $arr));

当然,在内部,这会执行双循环;只是你没有在代码中看到它。您可以使用array_reduce()来摆脱一个循环:

array_reduce($arr, function(&$res, $item) {
    return $res + $item['yourkey'];
}, 0);

然而,如果速度是唯一的兴趣,foreach仍然是最快的:

$sum = 0;
foreach ($arr as $item) {
    $sum += $item['yourkey'];
}

这要归功于您正在使用的变量的“位置”,即没有用于计算最终总和的函数调用。

答案 1 :(得分:1)

试试这个

   <?php 
$totalAmount=0;
    foreach($sudentname as $key => $v){ 
        $totalAmount +=$amount[$key]; // to sum all of amount
        echo 'Student Name : '.$v.'<br/>';
        echo 'Admission Number : '.$admissionnmbr[$key].'<br/>';
        echo 'Payment Type : '.$purpose[$key].'<br/>';
        echo 'Amount : '.$amount[$key].'<br/>';
        echo 'Grade : '.$grade[$key].'<br/>';
    }
    echo $totalAmount;
?>

答案 2 :(得分:1)

$Result = 0;
foreach($sudentname as $key => $v){ 
    echo 'Student Name : '.$v.'<br/>';
    echo 'Admission Number : '.$admissionnmbr[$key].'<br/>';
    echo 'Payment Type : '.$purpose[$key].'<br/>';
    echo 'Amount : '.$amount[$key].'<br/>';
    $Result += $amount[$key]; // increment $Result with the $amount[$key]
    echo 'Grade : '.$grade[$key].'<br/>';
}
echo "Result: $Result";