先贴上PHP程序代码如下:
$a = 1;
$b=&$a;
echo (++$a) + (++$a) + (++$a)."\n"; //10
echo $b."\n"; //4
echo $a."\n"; //4
第三行运行结果按理来说应该是9,我的思路如下
第一个(++$a)后,变量$a就成了2,
第二个(++$a)后,变量$a就成了3,
第一个(++$a)后,变量$a就成了4,
echo (++$a) + (++$a) + (++$a)."\n"; 就相当于是2+3+4
$b是引用的$a的地址,所以肯定也是4咯~~
这是自己最初的想法~~然而现实让我凌乱了,运行出来的结果居然是 10 4 4
怎么会得到10,哪里多出来的1!!!神马情况~~
后来自己试了试各种方法~~
$a = 1;
$b=&$a;
$c = (++$a);
$d = (++$a);
$e = (++$a);
echo $c."\n";
echo $d."\n";
echo $e."\n";
echo $c+$d+$e;
结果运行出来:2 3 4 9,也不会得到10啊
再试着将$b = &$a;去掉~~结果就是9了,而不会得到10~~看来是引用之后连加出问题了~~
有人说这是PHP5.*的BUG,PHP7是显示正常的结果9,这里是因为地址引用与三次连加内存操作失误,
好吧~这就是个坑,就是一个BUG~~
完~~