个人认为 $a++ $a ++$a 在计算的时候是有优先级的 而不是简单的从左往右计算 大家可以参考手册里的一段代码 但是如果有优先级 上面的问题就更不好解释了~~~ 手册代码如下Something to think about:$a=1; $a += $a++ + ++$a; echo $a;will give you 7.Why is this?1. ++$a is first incremented. Now $a is 2. $a += $a++ + 2 $a is 22. $a++ is added to 2 then $a is incremented $a += 2 + 2 $a is 33. now the value of 2 + 2 is added to $a ($a is 3) $a = $a + 2 + 2Answer: 3 + 2 + 2 = 7
看对应的opcode比较实在,你要说按运算符优先顺序来,应该等于7
echo $a++; //应该是$a输出后在进行运算
echo $a;//这才得到了累加后
echo $a++ + $a + ++$a;
$a++ 是用$a的value参加运算,然后自+1(注意不是执行完整个式子后+1,而是程序执行完$a++后就自+1,$a++本身就是个程式),此时$a = 2,而++$a是先执行自+1后,在执行运算,也就是楼上的“1+2+3”了
$a + $a++ 输出结果为3的问题~~ 按大部分人的观点 应该是 1 + 1 =2
$a + $a++ 和 $a + $a + $a++ 输出结果一样 都是3!
$a + $a++ 输出结果为 3
但 $a + 0 + $a++ 输出结果却蛋疼的变成了2!!
手册代码如下Something to think about:$a=1;
$a += $a++ + ++$a;
echo $a;will give you 7.Why is this?1. ++$a is first incremented. Now $a is 2.
$a += $a++ + 2
$a is 22. $a++ is added to 2 then $a is incremented
$a += 2 + 2
$a is 33. now the value of 2 + 2 is added to $a ($a is 3)
$a = $a + 2 + 2Answer: 3 + 2 + 2 = 7
= 1 + 2 + 3 = 6