[php] PHP에서 ++ $ i와 $ i ++의 차이점은 무엇입니까?

차이 무엇 ++$i$i++PHP의는?



답변

++$i사전 증가이며 $i++사후 증가입니다.

  • 사전 증가 : 변수를 i먼저 증가시킨 다음 참조를 해제합니다.
  • 사후 증가 : 역 참조 후 증가 i

“PHP가 사후 증가 ($ i ++) 및 사전 증가 (++ $ i)를 허용한다는 사실을 활용하십시오. $ j = $ i ++와 같은 것을 작성하지 않는 한 의미는 동일합니다. 사전 증가는 거의 10 % 더 빠릅니다. 즉, 기회가있을 때 사후 증가에서 사전 증가로 전환해야합니다. 특히 빡빡한 루프에서 특히 마이크로 최적화에 대해 현명한 경우에는 더욱 그렇습니다! ” – TuxRadar

더 명확히하기 위해, PHP의 post-incrementation은이 10 % 오버 헤드와 pre-incrementation의 속성 인 임시 변수를 저장하는 것으로 문서화되었습니다.


답변

++$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

를 사용하는 데 약간의 성능 비용이 발생하는 경우가 $i++있습니다. 당신이 뭔가를 할 때

$a = $i++;

당신은 정말로 이것을하고 있습니다 :

$temporary_variable = $i;
$i=$i+1;
$a=$temporary_variable;


답변

++$i 사전 증가입니다.

  1. $i 증가
  2. 새 값이 반환됩니다.

$i++ 증가 후

  1. $i내부 임시 변수 에 복사 된 값
  2. $i 증가
  3. 의 이전 값의 내부 사본 $i이 리턴됩니다.


답변

++$i //first increment $i then run line
$i++ //first run line then increment $i 


답변

이 경우 차이가 없습니다.

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)
*/

그러나:

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)
*/


답변

이 예는 단순히 elplains

<?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


답변

차이점 은 변수 ++$i를 증가 $i시키고 업데이트 된 값 $i++을 반환 하는 반면 원래 값을 반환하므로 증가시킵니다.

$prefix = 1;
$postfix = 1;
echo ++$prefix;   // 2
echo $postfix++;  // 1