2017-03-02 4 views
1

는 내가 어떤 반복적 인 필드의 값을 얻기 위해 이것을 사용하고반복 필드에서 PHP에서 foreach 루프의 단일 값만 SUM하는 방법은 무엇입니까?

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

이 루프가 있습니다.

나는 합계를 얻기 위해 합계를 구해야합니다.

누군가가 반복적 인 섹션을 세 번 반복한다고 가정 해 봅시다. 금액이 세 가지 다른 값으로 세 번 올 것입니다. 예 : 10, 20, 30

합계를 계산하려면 해당 값을 SUM으로하고 루프의 바깥 쪽을 표시하십시오.

어떻게 할 수 있습니까?

내가 array_sum

답변

1

을 사용하면 당신은 먼저 f_count 열을 선택 array_map 부부를()에 필요한이

<?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

시도 것을 할 수있는 전체 배열을 SUM하려는 경우 :

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

물론 이것은 내부적으로 이중 루프를 수행합니다. 코드 안의 코드를 보지 못했을뿐입니다. 당신은 (는) 하나 개의 루프를 제거하는 array_reduce을 사용할 수

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

이는 "지역"의 덕분입니다 : 속도가에만 관심이있는 경우,

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

그러나 foreach는 가장 빠른 남아 사용중인 변수, 즉 최종 합계를 계산하는 데 사용되는 함수 호출이 없습니다.

+0

감사합니다 –