$a = "hello";
$b = &$a;
unset($a);
echo $a; //没有值
echo $b; //结果是hellounset $a之后,为什么$b的值还存在?
如果$a变化之后$b也应该随之变化啊?为什么$b没变?

解决方案 »

  1.   

    unset($a)
    这里的unset是一个销毁变量的函数,而不是给$a赋空值
    unset($a) 跟 $a = ""是两个完全不同的概念,销毁$a 跟$b没什么关系。
    你把 unset($a)换成 $a = "" 你再看看结果就知道了。
    用var_dump()查看输出结果会更明显一些
      

  2.   

    正解~~~~http://blog.csdn.net/Alex_Best/archive/2010/11/15/6011246.aspx 你可以看看这个题目,可以让你对地址引用更加熟悉
      

  3.   

    在PHP 中引用的意思是:不同的名字访问同一个变量内容.
    与C语言中的指针是有差别的.C语言中的指针里面存储的是变量的内容在内存中存放的地址PHP 的引用允许你用两个变量来指向同一个内容PHP中有时你可能想建立一个对象的副本,并希望原来的对象的改变不影响到副本 。当你 unset 一个引用,只是断开了变量名和变量内容之间的绑定。这并不意味着变量内容被销毁了也就是你unset的是其中1个变量。 另个还存在不变化
      

  4.   


    //php引用的使用
    $a = 123;
    $b = &$a;   //现在$a又有了一个别名叫$b
    $b = 234;   //操作$b就相当于操作$a,现在$a = 234
    $b = null;  //此操作能清空$a和$b
    unset($b);  //次操作才能取消$b和$a的绑定,取消了变量$b