0

假设我有以下代码:

<?php           
    $i = 1;
    $user_login = "some_name";

    do {
        $user_login_tmp = $user_login . "_" . ($i++);
        echo $user_login_tmp . "\n";
    } while ($i<10);
?>

正如在这个演示中看到的(可点击!),第一个echo回声some_name_1.
这对我来说似乎有点奇怪,因为那里$i++有。
为什么第一个输出不是..._2?我错过了什么吗?

我尝试在 do-while 循环的 PHP 手册页中寻找答案,但在那里找不到我的答案...

4

5 回答 5

4

$i++执行后增量,它返回变量,然后加一。

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

您描述的行为可以通过使用 pre-increment: 来实现++$i

于 2012-12-13T22:05:17.353 回答
3

$i++增量。这意味着增量发生在取值之后。您可以++$i用于增量,其中增量发生在取值之前。

通常,大多数程序员更喜欢使用前增量,除非需要后增量。它们往往会稍微便宜一些,因为只需要一个值。使用预增量,您必须在进行增量时保留旧值,这使得它稍微贵一些。

于 2012-12-13T22:04:47.083 回答
2

$i++++在获得 的值之后发生$i。相反,++$i首先递增,然后“返回”新值。

于 2012-12-13T22:04:39.643 回答
2

$i++后增量,这意味着:return $i and then increments $i by one.

..._2如果您将代码更改为(新演示),演示的输出将开始(++$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.
于 2012-12-13T22:08:55.027 回答
1

$i++ 正在使用后运算符。在 $i 被连接之后,它会被评估。

于 2012-12-13T22:04:48.017 回答