차이 무엇 ++$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
사전 증가입니다.
$i
증가- 새 값이 반환됩니다.
$i++
증가 후
$i
내부 임시 변수 에 복사 된 값$i
증가- 의 이전 값의 내부 사본
$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
