jld*_*ont 85
++$i
在增量$i++
后是预增量.
i
首先增加变量然后去参考.i
"利用PHP允许你后增量($ i ++)和预增量(++ $ i)的事实.只要你不写$ j = $ i ++这样的东西,意思就是一样的,但是预增量几乎快10%,这意味着当你有机会时,你应该从后增加到预增量,特别是在紧密循环中,特别是如果你对微观优化很迂腐!" - TuxRadar
为了进一步说明,PHP中的后增量已被记录为存储临时变量,该变量归因于此10%开销与预增量之间的关系.
Sha*_*mer 54
++$i
增量$i
,但计算$i+1
$i++
增量值$i
,但计算为旧值$i
.
这是一个例子:
$i = 10;
$a = $i++;
// Now $a is 10, and $i is 11
$i = 10;
$a = ++$i;
// Now $a is 11, and $i is 11
Run Code Online (Sandbox Code Playgroud)
使用时有时会有轻微的性能成本$i++
.当你做类似的事情时,请参阅
$a = $i++;
Run Code Online (Sandbox Code Playgroud)
你真的这样做:
$temporary_variable = $i;
$i=$i+1;
$a=$temporary_variable;
Run Code Online (Sandbox Code Playgroud)
Saj*_*ani 12
++$i //first increment $i then run line
$i++ //first run line then increment $i
Run Code Online (Sandbox Code Playgroud)
小智 10
在这种情况下,没有区别:
for($i = 0;$i<3;++$i)var_dump $i;
/*
int(0)
int(1)
int(2)
*/
for($i = 0;$i<3;$i++)var_dump $i;
/*
int(0)
int(1)
int(2)
*/
Run Code Online (Sandbox Code Playgroud)
但:
for($i = 0;$i<3; $j = ++$i )var_dump($j);
/*
NULL
int(1)
int(2)
*/
for($i = 0;$i<3; $j = $i++ )var_dump($j);
/*
NULL
int(0)
int(1)
*/
Run Code Online (Sandbox Code Playgroud)
区别在于:++$i
会递增$i
变量并返回更新的值,而$i++
会返回原始值,因此递增它。
$prefix = 1;
$postfix = 1;
echo ++$prefix; // 2
echo $postfix++; // 1
Run Code Online (Sandbox Code Playgroud)
小智 7
这个例子简直就是平原
<?php
$x = 10;
echo $x++. ' '.$x; // the result is 10 and 11
echo "<br>";
$y = 10;
echo ++$y. ' ' .$y; // the result is 11 and 11
// so the $x++ is not showing +1 at first but the next time
// and the ++y is showing +1 first time but not increasing next
?>
Run Code Online (Sandbox Code Playgroud)
查看前置和后置递增的另一种方式是,它是组合 2 个语句的简写。
预递增
// long form
$y = $y + 1;
$x = $y; // any statement using $y
// shorthand
$x = ++$y; // the same statement using $y
Run Code Online (Sandbox Code Playgroud)
后递增
// long form
$x = $y; // any statement using $y
$y = $y + 1;
// shorthand
$x = $y++; // the same statement using $y
Run Code Online (Sandbox Code Playgroud)
解释 jldupont 的观点:
$i = 1;
$x = $i++;
echo $x; // prints 1
$x = ++$i;
echo $x; // prints 3
Run Code Online (Sandbox Code Playgroud)
小智 5
$i++ 被称为后增量。它仅在首先将 $i 的原始值分配给 $j 后才增加 $i 的值。
++$i 被称为预增量。它在将值分配给 $j 之前增加 $i 的值,因此 $i 的更新值将分配给 $j。
因此,
$i = 4;
$j = $i++;
// Now, $i = 5 and $j = 4
$i = 4;
$j = ++$i;
// Now, $i = 5 and $j = 5
Run Code Online (Sandbox Code Playgroud)
这些理论也以类似的方式应用于递减。
希望这可以帮助!
归档时间: |
|
查看次数: |
64728 次 |
最近记录: |