PHP中的预增量和后增量

amd*_*amd 5 javascript php java

以下语句的结果应该给出9 :(使用java或js或c ++)

i = 1;
i += ++i + i++ + ++i;
//i = 9 now
Run Code Online (Sandbox Code Playgroud)

但在PHP中

同样的陈述会给12?

$i = 1;
$i +=  ++$i + $i++ + ++$i;
echo $i;
Run Code Online (Sandbox Code Playgroud)

这是一个错误还是任何人都可以解释为什么?

Bor*_*lid 7

答案是"因为它是PHP".并且PHP不保证这种类型的语句(顺便说一句,C也没有).

是的,它可能被认为是错误的,但它是PHP.看到这个"不是bug"错误报告.


Kep*_*pil 7

看看这里的一个类似的例子.

基本上这是发生的事情:

首先++$i进行评估.$i现在是2.
$i += 2 + $i++ + ++$i;

接下来,$i++进行评估.$i现在是3.
$i += 2 + 2 + ++$i;

接下来,++$i进行评估.$i现在是4.
$i += 2 + 2 + 4;

最后计算总和:
$i = 4 + 2 + 2 + 4 = 12