2016-02-12 105 views
0

我試圖設置一個基本的PHP代碼,它掃描數字並計算一組條件的總數。在這裏,我想說我想添加100和200之間的所有數字,即偶數和5的倍數。要做到這一點,我想我可以先將這些數字放入數組中,然後將數組加起來。在PHP中計算數組的總和

事情是這樣的:

<?php 
    $total = 0; 
    $naturalNumber = array(); 
    $naturalNumber[] = $i; 
    while ($i % 2 == 0 && $i % 5 == 0) { 
    for($i>=100; $i <=200; $i++) { 
     $naturalNumber[] = $i; 
     $total = array_sum($naturalNumber); 
    } 
    } 
    echo "<p>$total</p>"; 
?> 

但出現錯誤:cannot use [] for reading,沒有任何語義問題,在這裏呢?

乾杯!

+0

什麼是「自然數」,數甚至是5的倍數? – jpganz18

+4

你從哪裏得到'$ i'?您將'$ i'推入'$ naturalNumber'數組,但是'$ i'在它之前不存在? – Ben

+0

你說的沒錯,我可以在開始時聲明$ i,不過,對吧? – user5904242

回答

4

for循環是不正確的:

for($i>=100; $i <=200; $i++) { 
     ^^ 

for第一個參數應該是一個價值的分配,你不這樣做,你只是如果$i測試大於100,這沒有意義。 $i從來沒有被首先定義,所以你有效地嘗試迭代(null >= 100) -> 200 - >false -> 200 - >0 -> 200

你想

for($i = 100; $i <=200; $i++) { 
     ^---note this 

代替。

再加上嵌套的whilefor也只是......很奇怪。爲什麼while在第一位?所有你需要的是for循環和和if裏面,做各種%測試。

0

由於「@Marc B」先生明確地做了這個解決方案,但我想分享我自己的意見。 你也可以這樣做,

<?php  
    $total = 0; 
    $naturalNumber = array(); 
    //array_push($naturalNumber, $i);  
    for($i=100; $i <=200; $i++) { 
    if ($i % 2 == 0 && $i % 5 == 0) { 
     array_push($naturalNumber, $i); 
    } 
    } 
    $total = array_sum($naturalNumber); 
    echo "<p>$total</p>"; 
?> 
+0

謝謝你,你可以告訴我是一個業餘的學習交易,所以感謝所有的評論! – user5904242

+0

再次while循環是毫無意義的。你應該只有'for(...){if($ i%2等){array_push(...); }}' –

+0

@MarcB,先生,我做到了。感謝您的幫助。 –