請問誰能給個解釋?關於引用“&”

來源:互聯網
上載者:User
class Test {protected $var = null;function __construct(&$var) {$var['z']=2;$this->var = &$var;$this->var['xx']=2;}}$x=['b'=>2];$d=new Test($x);print_r($x);


以上代碼如果把$this->var = &$var變成$this->var = $var;
則xx=2這句不生效。$var不是已經是引用了嗎?


回複討論(解決方案)

你修改的是$this->var 但引用的是建構函式的臨時變數$var
所以$x不變
$this->var['xx']=2; 再改成$var['xx'] = 2;

你修改的是$this->var 但引用的是建構函式的臨時變數$var
所以$x不變
$this->var['xx']=2; 再改成$var['xx'] = 2;



不太明白你的意思。$this->var難道不是指外部變數$x的引用?因為構造中用的是(&$var)這個$var就是引用。而把這個引用給了類中的var

有什麼問題嗎?很正常啊,是引用地址了。

class Test {    protected $var = null;    function __construct(&$var) {        $var['z']=2;        $this->var = &$var;        $this->var['xx']=2;    }}  $x=array('b'=>2);$d=new Test($x);print_r($x);


Array
(
[b] => 2
[z] => 2
[xx] => 2
)

$x = array('b'=>2);
$a =& $x; //$a 是 $x 的引用
$a['a'] = 'a'; //所以對 $a 的改變會影響到 $x
$b = $a; //$b 不是 $a 的引用
$b['b'] = 'b'; //所以對 $b 的改變不會影響到 $a,更不會傳遞到 $x
print_r($x);

http://www.cnblogs.com/thinksasa/p/3334492.html
看看就明白了

$this->var = $var; 不是引用,$this->var修改不?影?$var
$this->var = &$var; 是引用 ,$this->var修改?影?$var

不太明白你的意思。$this->var難道不是指外部變數$x的引用?因為構造中用的是(&$var)這個$var就是引用。而把這個引用給了類中的var



我好像明白你的疑問在哪了
如果$b引用了$a,你再用$b給$c賦值,如果不再次引用$b,$c得到的還是一個建立記憶體資料,想要使$c引用到$a,那麼必須$c = &$b



不太明白你的意思。$this->var難道不是指外部變數$x的引用?因為構造中用的是(&$var)這個$var就是引用。而把這個引用給了類中的var



我好像明白你的疑問在哪了
如果$b引用了$a,你再用$b給$c賦值,如果不再次引用$b,$c得到的還是一個建立記憶體資料,想要使$c引用到$a,那麼必須$c = &$b



看了下手冊,貌似php的&與c語言中的&根本不是一個概念。

php 的引用和 c語言 的指標當然不是一回事
但你主貼中的代碼的表現和等價c代碼的表現是一樣的

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.