假设我有以下代码:
<?php
$i = 1;
$user_login = "some_name";
do {
$user_login_tmp = $user_login . "_" . ($i++);
echo $user_login_tmp . "\n";
} while ($i<10);
?>
如此demo(可点击!)所示,第一个echo
回声some_name_1
。
这对我来说有点奇怪,因为那里有$i++
为什么第一个输出不是..._2
?我错过了什么吗?
我试着在do-while循环的PHP手册页中寻找答案,但我找不到答案......
答案 0 :(得分:4)
$i++
执行后递增,返回变量,然后递增1。
您所描述的行为可以通过使用预增量来实现:++$i
。
答案 1 :(得分:3)
$i++
是帖子 -increment。这意味着增量发生在值之后。您可以使用++$i
作为 pre -increment,其中增量发生在值之前。
通常,大多数程序员喜欢使用预增量,除非需要后增量。它们往往稍微便宜,因为只需要一个值。使用预增量时,您必须在执行增量时保留旧值,这会使其稍微昂贵。
答案 2 :(得分:2)
使用$i++
,++
在获得$i
的值后发生。相反,++$i
先递增,然后“返回”新值。
答案 3 :(得分:2)
$i++
后递增,表示:return $i and then increments $i by one.
如果您将代码更改为..._2
(new demo)
(++$i)
开头
查看PHP.net关于递增运算符的页面:
http://php.net/manual/en/language.operators.increment.php
++$a Pre-increment Increments $a by one, then returns $a.
$a++ Post-increment Returns $a, then increments $a by one.
--$a Pre-decrement Decrements $a by one, then returns $a.
$a-- Post-decrement Returns $a, then decrements $a by one.
答案 4 :(得分:1)
$ i ++正在使用post-operator。在连接$ i之后,然后对其进行评估。