【发布时间】:2012-08-02 21:05:14
【问题描述】:
这可能是一个可笑的“问题”,但我只是看不出这种行为的原因。
事实:
$i++;
返回当前值,然后将 $i 加一。
++$i;
将 $i 加一,然后返回 $i。
情况:
for($i = 0; $i < 10; ++$i){
echo $i."\n";
}
给予
0
1
2
3
4
5
6
7
8
9
第二个:
for($i = 0; $i < 10; $i++){
echo $i."\n";
}
也给予
0
1
2
3
4
5
6
7
8
9
如果我从字面上理解增量的文档,我会按如下方式解释循环:
- 在每次迭代结束时,$i 加一,然后 返回,所以我们首先得到一个 0,因为 $i 以 0 开始,然后是 1,以此类推。
- 在每次迭代结束时,返回 $i,然后递增, 确切地说,这意味着有两次迭代 $i = 0.
事实并非如此。谁能解释一下,为什么?
【问题讨论】:
-
动作总是在循环结束时发生。无论您是后增量还是预增量,都可以在最后将其视为一个完全独立的语句。
-
非常感谢您的回答,事实证明我真的很困惑设置语句和返回某些东西之间的区别。这应该也是 $i+2 而不是 $i=$i+2 在这部分循环中不起作用的原因。