PHP中的++ $ i和$ i ++有什么区别?

Ste*_*ven 70 php operators

PHP ++$i$i++PHP 之间的区别是什么?

jld*_*ont 85

++$i在增量$i++后是预增量.

  • 预增量:i首先增加变量然后去参考.
  • 后增量:去引用然后增加 i

"利用PHP允许你后增量($ i ++)和预增量(++ $ i)的事实.只要你不写$ j = $ i ++这样的东西,意思就是一样的,但是预增量几乎快10%,这意味着当你有机会时,你应该从后增加到预增量,特别是在紧密循环中,特别是如果你对微观优化很迂腐!" - TuxRadar

为了进一步说明,PHP中的后增量已被记录为存储临时变量,该变量归因于此10%开销与预增量之间的关系.

  • 这是一般的经验法则,还是PHP特有的. (6认同)
  • @knittl请记住,这是一个(一个希望)_very_快速操作的10%:) (4认同)
  • 由于后增量创建临时变量,从而产生开销,因此预增量的速度增加是特定于PHP的. (3认同)
  • 我自己也不会推广其他语言. (2认同)

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)

  • 这是更好的答案.如果没有代码示例,这样做的通用概括是没有意义的.对这些答案的赞成可能来自那些已经知道它如何运作的人,因此认为他们是很好的答案. (3认同)

Gum*_*mbo 38

++$i 是预增量

  1. $i 增加
  2. 返回新值

$i++ 是后增量

  1. 的值$i拷贝到内部临时变量
  2. $i 增加
  3. $i返回旧值的内部副本


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)


Rub*_*ias 7

区别在于:++$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)


Mic*_*ael 6

查看前置和后置递增的另一种方式是,它是组合 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)


Bol*_*wyn 5

解释 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)

这些理论也以类似的方式应用于递减。

希望这可以帮助!