Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.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
Php 为什么增量后和增量前在这里相等?_Php_Increment_Post Increment_Pre Increment - Fatal编程技术网

Php 为什么增量后和增量前在这里相等?

Php 为什么增量后和增量前在这里相等?,php,increment,post-increment,pre-increment,Php,Increment,Post Increment,Pre Increment,当我尝试使用下面的代码作为$j的后增量或预增量时,结果总是一样的。你知道为什么吗?请告诉我。多谢各位 <?php $j = 1; while( $j < 20 ) { $j++; echo "1 * $j is equal to $j <br/>"; } ?> 在此代码中: $j = 1; while( $j < 20 ) { $j++; echo "1 * $j is equal to $j <br/>"; }

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

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

在此代码中:

$j = 1;
while( $j < 20 ) {
    $j++;
    echo "1 * $j is equal to $j <br/>";
}
$j
将在其值与20进行比较后递增。此循环将在2到19的输出中显示
$j
的值

如果你写

$j = 1;
while( ++$j < 20 ) {
    echo "1 * $j is equal to $j <br/>";
}
$j=1;
而(++$j<20){
echo“1*$j等于$j
”; }
在将
$j
与20进行比较之前,
$j
的值将增加。此循环将在2到20的输出中显示
$j
的值


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

在这个代码$j=1中,我们初始化,然后检查条件,它满足条件,然后它增加$j=2的值,现在$j的原始值是2。因此,在echo语句中,1*$j等于$j意味着1*2等于2。 像这样,所有的迭代将一直进行到循环结束。
就像我们使用的相同情况下的预增量将首先发生值增量,然后通过原始值计算相同的输出,因为
$j++
本身在一行上。它不是在
$j
增量之前或之后出现的另一个表达式的一部分。当它自己在一行上时
$j++
+$j做同样的事情。问自己:“在什么之前增加”或“在什么之后增加”?现在,如果您使用
while($j++<20)
,那么将
$j
的值与20进行比较后,它将递增。然而,如果您在编写
while(+++$j<20)
时将
$j
的值增加,然后将
$j
与20进行比较。这是因为现在,
$j
是一个更大的表达式的一部分,在这个表达式中,顺序很重要。@潜伏者最好的详细解释。谢谢你的解释。谢谢你的详细解释。所以问题是,当在逻辑中使用post和pre increment时,它们的值会不同,如果它们用作一条线,那么它们的值不会不同,对吗?@M.SShohan是的。pre-或post-increment是指在对其中的表达式进行求值时使用它之前或之后。如果表达式只是
$j
,那么显然它没有效果。如果您认为我的答案可以接受,请在有机会时将其标记为已接受。:)在这两种情况下,该值将不同,因为它取决于在逻辑语句之前或之后使用该语句或行的位置
$j = 1;
while( ++$j < 20 ) {
    echo "1 * $j is equal to $j <br/>";
}