$a = 1;$b=&$a;echo (++$b)+(++$b);输出结果你猜是什么?可能有些人以为是5,比如我…但是实际结果是6,why?其实这是个写时复制导致的问题。先看这段代码:$a = 1;$b=$a;echo (++$b)+(++$b);左侧++$b计算结束,$左值=$b;继续计算右边的++$b,在修改$b时,因为$b发生改变,与$左值不同,左值会复制一份,$左值=2,$b改变后,$b=3,所以$左值+$右值=5。而上面的代码,左侧++$b计算结束,$左值=$b;与上面相同。继续计算右边的++$b,在修改$b时,因为$左值是引用,所以并未复制出新变量。$左值=$b,所以相加后是6引用计数相关的资料可以在这里找到:http://www.php.net/manual/en/function.deb
发布时间:
2010-07-19 |
类别:
| 阅读:115355 | 评论:0 |
标签:
php 写时复制