2017-03-02 29 views
1

我有這個循環如何在PHP中的重複字段中只彙總一個foreach循環的單個值?

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

我用這來得到一些重複的字段的值。

我必須得到它的總和的總和。

假設有人正在重複三次重複部分。 然後數量將有三次與三個不同的值。 ex:10,20,30

爲了計算總數,我想SUM值...並顯示出循環的外側。

該怎麼辦?

如果我要總結整個數組我能做到這一點使用array_sum

回答

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; 
?> 
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"; 
+0

感謝您的摘錄.. upvoted –

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

這要感謝的「局部性」你正在使用的變量,即沒有函數調用來計算最終的總和。

+0

謝謝你的xplanation –

相關問題