2017-08-02 296 views
2

我的任務是創建一個循環,顯示列中的所有偶數,並且還顯示所有奇數的總和數組。 到目前爲止,我已經做出這樣的:PHP「for」循環,列出所有偶數並顯示數組中所有奇數的總和

<?php 
$numbers = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); 
foreach ($numbers as $index=>$value) { 
if ($value % 2 == 0) 
echo "$value <br>"; 
} 
?> 

此代碼成功地顯示所有偶數號碼的列表。但是,我仍然需要包含顯示在evens列表下面的所有奇數的總和。出於某種原因,我應該使用變量$ sumOdd = 0.

我從這裏開始如何處理?

回答

4
<?php 
$numbers = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); 
$sumOdd = 0; 

foreach ($numbers as $index=>$value) { 

    if ($value % 2 == 0) 
     echo "$value <br>"; 
    } else { 
     $sumOdd += $value 
    } 
} 

echo $sumOdd; 
+0

打倒我很好 – GrumpyCrouton

0

heyo,

的$ sumOdd = 0;應該是在foreach之前,在foreach裏面,你會做的另一項檢查,如果它很奇怪,你添加的號碼上$ sumOdd + = $值

1

向後做到這一點:增加所有數字,取出甚至是那些

<?php 
$numbers = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); 
$sum = array_sum($numbers); 
foreach ($numbers as $index=>$value) { 
    if ($value % 2 == 0) 
    echo "$value <br>"; 
    $sum = $sum - $value; 
} 
echo 'odds: '. $sum; 
?> 
0

這是一個短期和更清潔的答案:

$sumOdd = 0; 

foreach (range(1, 10) as $number) { 

    if (0 === $number % 2) { 
     echo $number . '<br>'; 
     continue; 
    } 

    $sumOdd += $number; 
} 

echo '<br> sumOdd = '.$sumOdd; 
+0

這改變了整個片段。由於問題的本質,我猜測作者現在對PHP沒有太多的瞭解。 把他寫的和理解的片段改成沒有解釋的片段可能會讓他更加困惑。 這就是爲什麼我只對他的代碼片段做了小改動,而不是重寫整個事情。 –

+1

謝謝@JeroenBleijenberg,是的,我知道,這只是爲了幫助他改進一點他編寫代碼的方式。你的回答是他所需要的^^ – yoeunes

0

一種更好的方式來計算的總和是的array_filter結果傳遞給array_sum。通過這樣做,您可以分離任務(計算,顯示),代碼變得更加乾淨和可維護。

$numbers = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); 
$sumOdd = array_sum(array_filter($numbers, function($v) { 
    return $v % 2 !== 0; 
})); 
相關問題