2016-02-27 163 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,你最欢迎。祝你好运。 :) –

相关问题