<?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,有人可以解释一下吗?
答案 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
,因此最后一个数字不会被添加。