为什么即使在do-while PHP循环中使用++运算符之后,变量的默认值在第一次迭代中保持不变?

时间:2012-12-13 22:03:09

标签: php loops do-while

假设我有以下代码:

<?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手册页中寻找答案,但我找不到答案......

5 个答案:

答案 0 :(得分:4)

$i++执行后递增,返回变量,然后递增1。

  

http://php.net/manual/en/language.operators.increment.php

您所描述的行为可以通过使用预增量来实现:++$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之后,然后对其进行评估。