我已将问题缩小到此代码
$a = 3;
$a = 3 * $a++;
echo $a; //9
$a = 3;
$a = $a * $a++;
echo $a; //12
Run Code Online (Sandbox Code Playgroud)
这是第一次操作的 VLD 操作码
compiled vars: !0 = $a
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
2 0 E > ASSIGN !0, 3
3 1 POST_INC ~2 !0
2 MUL ~3 ~2, 3
3 ASSIGN !0, ~3
4 4 ECHO !0
5 5 > RETURN 1
Run Code Online (Sandbox Code Playgroud)
用于第二次操作 ($a * $a++)
compiled vars: !0 = …Run Code Online (Sandbox Code Playgroud)