大家对于 ++$i 的理解基本是正确的,但是对 $i++ 的理解却有些偏差,尤其是当他作为一个表达式给别人赋值的时候。举例说明一下:
$i=0;
$j=$i++;
echo $j;
echo $i;
此时结果是$j为0,$i为1;到这里大家都没有问题。
但是,遇到下面的语句就犯了糊涂:
$i=0;
$i=$i++;
echo $i;
此时大部分的人都认为是1;但是结果却是0. 为什么呢?真实的$i=$i++的执行过程如下:
首先是$i++:
$temp=$i;
$i=$i+1;//此时$i变成了 1;
这两步完成以后,才是赋值操作:
$i = $temp;//赋值的时候,他是将事先保存到临时变量中的值再拿出来赋给别的变量,而这个变量现在恰好是他自己,而在赋值之前,$i 已经变成了 1,赋值之后,$i 又变成 0 ;
此时执行echo,输出结果自然就是 0 ;
其实js中,也是这个结果。
|
|