变量$ 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;
}
在纸张上手动写入每一次迭代循环以了解变量发生了什么。这是学习的最佳方式;) – walther
因为您在if语句之前增加了'$ i' – Rizier123
如果将$ i递增,则$ i变为1.在if语句中,1仍然小于$ total。 –