PHP中$a++和++$a的区别

<?php
$i=0;
while($i++){
switch(++$i){
case 5:
echo "quit at <br/>";
break;
case 10 :
echo "quit at 10<br/>";
break 2;
default :
break;
}
}
echo '$i='.$i;
?>


<?php

$i=0;
while(++$i){
switch(++$i){
case 5:
echo "quit at <br/>";
break;
case 10 :
echo "quit at 10<br/>";
break 2;
default :
break;
}
}
echo '$i='.$i;

可不可以 告诉我为什么 最后得出来的结果是不一样的?
?>

一、步骤不同

1、$a++:会先调用$a,之后执行自增运算。

2、++$a:先进行自增运算,之后调用$a。

二、主体不同

1、$a++:相当于 a = i; i++。

2、++$a:相当于 i++; a = i。


三、内存运行不同

1、$a++:内存中先将$a调入堆栈,之后指针自增1,之后将$a调出。

2、++$a:内存中指针先自增1之后将$a调入到指定内存位置。


参考资料来源:百度百科-自增自减运算符

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-03-19


一张图帮你搞定问题。


在理解的时候要注意,$i++所输出的值,和这条诗句执行过后的$i本身的值是不同的。

追问

那$i++什么时候才加上1呢

追答

是这样的:

while($i++) //在程序执行到这一行的时间,你要注意的是,$i++所输出的,是$i还没有递增之前的值,在图中,也就是0。

担是,这行代码执行完之后的下一行代码,你再获取$i,$i的值就已经递增完成,变成1了!!

那么如果程序改成如下的样子:

$temp = $i++; //我们在这里获取$i++;
while($temp){ //我们在这里获取$tmep;这个$temp的值是0,而里如果改成$i,那么$i的值就是1了。

这个应该不难理解吧?

比如:

$i=0;
$i++;
while($i){ //在这里,$i就是1了,然后就满足运行条件循环while了。

要知道,执行完$i++,$i++输出的值,运行完之后的$i值是不一样的。

另外,$i++与++$i的区别,有这么难以理解的吗?

本回答被提问者和网友采纳
第2个回答  2013-06-19
$a++ 是先使用$a的值,再将$a+1,比如$a=1, $b=$a++;;; 则$b=1,$a=2
++$a 是$a+1之后的整个值。。比如$a=1, $b=++$a;;; 则$b=2,$a=2
第3个回答  2013-06-19
$i++是先赋值再加,++$i是先加再赋值...就是这