2016-02-27 174 views
0
<?php 

$numbers = array(1,2,3,4); 

$total = count($numbers); 

$sum = 0; 

$output = ""; 

$i = 0; 

foreach($numbers as $number) { 
$i = $i + 1; 

if ($i < $total) { 

    $sum = $sum + $number; 

} 

} 

echo $sum; 

?> 

我正在通過TeamTreehouse.com上的PHP,同時學習php這是測驗問題之一,答案是6.我不知道爲什麼答案是6,有人可以解釋嗎?

+2

在紙張上手動寫入每一次迭代循環以瞭解變量發生了什麼。這是學習的最佳方式;) – walther

+0

因爲您在if語句之前增加了'$ i' – Rizier123

+0

如果將$ i遞增,則$ i變爲1.在if語句中,1仍然小於$ total。 –

回答

2

變量$ i由0(零)初始化。
條件之前如果($我< $總)是$測試i由1.因此,即使在第一次等於1
在第三通$ i等於3遞增,並且在第四通過它等於4這是不是 < $ total。

因此,只有$號的4種元素的3相加:1 + 2 + 3,其等於6.

參見下面的代碼中的註釋:

<?php 

$numbers = array(1,2,3,4); 

$total = count($numbers);   // Gives 4 

$sum = 0; 

$output = ""; 

$i = 0;       // $i = 0 

foreach($numbers as $number) { 
    $i = $i + 1;     // $i = 1, even at the first time 
            // after 3 passes $i is equal to $total (=4) 
    if ($i < $total) {   // So, only 3 of the 4 elements of $number are honored 
     $sum = $sum + $number; 
    } 
} 

echo $sum;      // Thus $sum = 1 + 2 + 3 = 6 
            // The last element (=4) is never summed up 

?> 

這將總結所有4個元素,給出10個結果:

foreach($numbers as $number) { 
    if ($i < $total) { 
     $sum = $sum + $number; 
    } 
    $i = $i + 1; 
} 
+0

道歉需要勺子餵養,但這是最好的解釋。感謝您的幫助,我現在完全瞭解! –

0

該條件限制了迭代。當$i爲4時,它不會小於$total,因此最後一個數字不會被添加。

+0

這不是我的條件它是一個測驗在樹屋找出答案,我錯了,所以我打印代碼,它顯示6.我不明白爲什麼它是打印6. 所以'$ i = 4'因爲它增加了數組中的每個項目,因此它不再低於'$ total',它們變得相等,所以它不會打擾總和。 6是否來自'$ numbers = array(0,1,2,3)',如同在空格中那樣,而不是實際的項目。它計算空間總數= 6? –

+0

因爲它加入1,2,和3 –

+0

它停止在三個因爲$ I必須小於4,所以它不走過去的4,所以它只做這是數組中的第3號1+ 2 + 3 = 6.我的理解是正確的嗎? –

1
<?php 

$numbers = array(1,2,3,4); 

$total = count($numbers); #value of $total is 4 here 
$sum = 0; 
$output = ""; #intital empty 
$i = 0; 

foreach($numbers as $number) { 
$i = $i + 1; 

if ($i < $total) { 

    $sum = $sum + $number; 

} 

} 

echo $sum; 

?> 

您將$ i增加1,使其變爲1小於$ total(即4)。你的程序將被添加,直到$ i變成4.它只是在你的數組中添加前三個數字。

1 + 2 + 3 = 6。

這就是爲什麼你會得到6. 我希望你能得到它。 :)

+0

這有助於我理解,謝謝! :) –

+0

@MikeRodham,你最歡迎。祝你好運。 :) –

相關問題