Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么即使在do-while-PHP循环中使用了++操作符,变量的默认值在第一次迭代中仍然保持不变?_Php_Loops_Do While - Fatal编程技术网

为什么即使在do-while-PHP循环中使用了++操作符,变量的默认值在第一次迭代中仍然保持不变?

为什么即使在do-while-PHP循环中使用了++操作符,变量的默认值在第一次迭代中仍然保持不变?,php,loops,do-while,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); ?> 如图所示,可点击!,第一个回声回荡着某个名字。 这对我来说似乎有点奇怪,因为那里有$i++

假设我有以下代码:

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

    do {
        $user_login_tmp = $user_login . "_" . ($i++);
        echo $user_login_tmp . "\n";
    } while ($i<10);
?>
如图所示,可点击!,第一个回声回荡着某个名字。 这对我来说似乎有点奇怪,因为那里有$i++。 为什么第一个输出不是…\u 2?我错过什么了吗

我试图在do while循环的PHP手册页面中寻找答案,但在那里找不到我的答案…

使用$I++,在获得$I的值后,++发生。相反,++$i首先递增,然后返回新值。

$i++是后期递增。这意味着增量发生在获取值之后。您可以使用+++$i进行预增量,其中增量发生在获取值之前


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

$i++正在使用post运算符。连接$i后,将对其进行计算。

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

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

$i++Post increments,它的意思是:返回$i,然后将$i递增1

如果将代码更改为+++$i,演示的输出将以…_2开始

查看PHP.net页面中有关递增运算符的内容:

查看有关后减量和预减量运算符的示例。
++$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.