php中對象是參考型別嗎?

來源:互聯網
上載者:User

標籤:簡單   參數   學生   千鋒   指標   問題   bsp   眼睛   函數參數   

這貌似是一個極其簡單的問題,還用得著專門寫一篇博文?各位看官,最初我也這麼認為,但這的確蒙蔽了你那水靈靈的小眼睛,不妨看看什麼是引用?

$a = 10;$b = &$a;$b = 20;var_dump($a,$b);在這段極其簡單的代碼中,$b是$a的引用,也即是別名,修改$b,$a會變,反之亦然。這就是所謂的引用,那對象是不是也是這樣的呢?class A{public $num = 10;}$a = new A();$a->num = 20;function demo($b){$b[0] = 5;var_dump($b);}demo($a)var_dump($a);你會發現兩次輸出一樣,那這是不是說明對象做函數參數時是引用傳參呢?在這一點上不得不說千鋒的學生的確是勤學好問,我剛開始以為是引用傳參,但同學提出如果你把demo裡修改為:function demo($b){$b = new A();var_dump($b);}兩次輸出並不一樣!這是為什麼呢?如果從c語言角度講,php裡的任何變數,包括對象都是指標,對象做參數相當於二重指標,所以當$b指向一個全新的對象後,並不影響$obj,所以對象做函數參數並不是引用傳參!又這麼一幫勤學好問的學生,整個水準都不一樣了。

php中對象是參考型別嗎?

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.