php中對象是引用類型嗎?

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

$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);

你會發(fā)現(xiàn)兩次輸出一樣,那這是不是說明對象做函數(shù)參數(shù)時是引用傳參呢?在這一點(diǎn)上不得不說千鋒的學(xué)生的確是勤學(xué)好問,我剛開始以為是引用傳參,但同學(xué)提出如果你把demo里修改為:

function demo($b)

{

$b = new A();

var_dump($b);

}

兩次輸出并不一樣!這是為什么呢?如果從c語言角度講,php里的任何變量,包括對象都是指針,對象做參數(shù)相當(dāng)于二重指針,所以當(dāng)$b指向一個全新的對象后,并不影響$obj,所以對象做函數(shù)參數(shù)并不是引用傳參!又這么一幫勤學(xué)好問的學(xué)生,整個水準(zhǔn)都不一樣了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 千峰PHP 這貌似是一個極其簡單的問題,還用得著專門寫一篇博文?各位看官,最初我也這么認(rèn)為,但這的確蒙蔽了你那水靈...
    往事隨風(fēng)009閱讀 252評論 0 0
  • 這貌似是一個極其簡單的問題,還用得著專門寫一篇博文?各位看官,最初我也這么認(rèn)為,但這的確蒙蔽了你那水靈靈的小眼睛,...
    dagailv閱讀 178評論 0 0
  • 這貌似是一個極其簡單的問題,還用得著專門寫一篇博文?各位看官,最初我也這么認(rèn)為,但這的確蒙蔽了你那水靈靈的小眼睛,...
    美虎轆轆閱讀 167評論 0 0
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,740評論 18 399
  • 《ijs》速成開發(fā)手冊3.0 官方用戶交流:iApp開發(fā)交流(1) 239547050iApp開發(fā)交流(2) 10...
    葉染柒丶閱讀 5,651評論 0 7

友情鏈接更多精彩內(nèi)容