为什么6美元的答案是什么?

时间:2016-02-27 17:45:09

标签: php

<?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,有人可以解释一下吗?

3 个答案:

答案 0 :(得分:2)

变量$ i初始化为0(零) 之前条件如果($ i <$ total)被测试,$ i增加1.所以即使是第一次它等于1。 在第三遍中,$ i等于3,在第四遍中等于4,即 NOT &lt; $总。

因此,$ number中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;
}

答案 1 :(得分: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。 我希望你明白。 :)

答案 2 :(得分:0)

条件限制了迭代次数。当$i为4时,它不会小于$total,因此最后一个数字不会被添加。