为什么后期增量和预增量在这里相等?

时间:2018-01-20 17:18:47

标签: php increment post-increment pre-increment

当我尝试使用下面的代码作为$ j的后增量或预增量时,结果总是相同的。你知道为什么吗?请告诉我。谢谢。

<?php
$j = 1;
while( $j < 20 ) {
    $j++;
    echo "1 * $j is equal to $j <br/>";
}
?>

2 个答案:

答案 0 :(得分:2)

在此代码中:

$j = 1;
while( $j < 20 ) {
    $j++;
    echo "1 * $j is equal to $j <br/>";
}

无论你在这里写$j++;还是在++$j;写这都没关系,因为$j++本身就是一行。它不是$j增量之前或之后的另一个表达式的一部分。当它在一条线上$j++;++$j;做同样的事情。问问自己:“在什么之前增加$j?”或“在{”之后增加$j

现在,如果你有了:

$j = 1;
while( $j++ < 20 ) {
    echo "1 * $j is equal to $j <br/>";
}
在将其值与20进行比较后,

$j将递增。此循环将在2到19的输出中显示$j的值。

然而,如果你写了

$j = 1;
while( ++$j < 20 ) {
    echo "1 * $j is equal to $j <br/>";
}

$j与20进行比较之前,$j的值会增加。此循环将在2到20的输出中显示$j的值

那是因为现在$j是一个更大的表达式的一部分,其中增量的顺序很重要。

答案 1 :(得分:0)

在这个代码$ j = 1中我们初始化然后我们检查它满足条件的条件然后它增加$ j = 2的值现在$ j的原始值是2.因此在echo语句中1 * $ j是等于$ j表示1 * 2等于2。 像这样,所有迭代都将跟随循环结束。 好像我们使用相同情况的预增量将发生第一个值增量,然后通过原始值计算相同的输出