PHP的&引用奇怪结果求解

    偶然在开源书籍“TIPI: 深入理解PHP内核”的第六节(写时复制)里看到这样一个例子:
<?php
$a['x']=1;
$b=&$a['x'];
$c=$a;
$c['x']=2;
echo $a['x'];
?>
    书里面说本例将输出2,我不信,试了下,在最新的PHP5.4.3上真的输出2!
    谁知道这是怎么回事吗?(那书就看了这么一节,不明白$b=&$a['x'];对$a['x']造成了什么影响。)
    而且这时var_dump($a);会得到更有趣的结果,它会显示$a['x']是一个引用,就像var_dump($b);时一样。
    似乎,&的作用和我想的不一样啊,它不是把$b标为$a['x']的引用,而是把$b和$a['x']指向的数据标为引用(即$a['x']和$b都成了写有1的那块内存的引用)。而当$c=$a后,$c['x']将仍然是一个引用,指向同一个地方,于是我们操作$c['x']影响了$a['x']的值。
    不知道我猜对没。
回复列表(9|隐藏机器人聊天)
  • @Ta / 2012-05-29 / /
    果。
  • @Ta / 2012-05-29 / /
    不懂 
  • @Ta / 2012-05-29 / /
    貌似虎绿没有几个比老虎厉害的吧
  • @Ta / 2012-05-29 / /
    呃…没看过…对引用不理解!
  • @Ta / 2012-05-29 / /
    我记得&的意思是a变量和b变量值的改变互不影响。。。好像是的。。记不清了。。。
  • @Ta / 2012-05-29 / /
    果断放弃阅读……
  • @Ta / 2012-05-29 / /
    我只知道是地址符,个人理解!C=A后,C[X]同一个地址同一个地方被赋值!也就是2了
  • @Ta / 2012-05-29 / /
    php既然不出指针的概念,当然是为了从简,$b=&$a['x']; 估计如你所说,都受到影响,成为引用类型
    而$c=$a;
     $c成为一个数组array("x" => 引用 ),愿天保佑,啊门!
  • @Ta / 2012-06-07 / /
    联系在一起了,改变其中一个都会影响到其它的值
添加新回复
回复需要登录