php中物件是引用型別嗎?

2022-07-18 04:36:14 字數 587 閱讀 4440

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

$a = 10;

$b = &$a;

$b = 20;

var_dump($a,$b);

在這段極其簡單的**中,$b是$a的引用,也即是別名,修改$b,$a會變,反之亦然。這就是所謂的引用,那物件是不是也是這樣的呢?

class a

$a = new a();

$a->num = 20;

function demo($b)

demo($a)

var_dump($a);

你會發現兩次輸出一樣,那這是不是說明物件做函式引數時是引用傳參呢?在這一點上不得不說千鋒的學生的確是勤學好問,我剛開始以為是引用傳參,但同學提出如果你把demo裡修改為:

function demo($b)

兩次輸出並不一樣!這是為什麼呢?如果從c語言角度講,php裡的任何變數,包括物件都是指標,物件做引數相當於二重指標,所以當$b指向乙個全新的物件後,並不影響$obj,所以物件做函式引數並不是引用傳參!又這麼一幫勤學好問的學生,整個水準都不一樣了。

php中物件是引用型別嗎?

這貌似是乙個極其簡單的問題,還用得著專門寫一篇博文?各位看官,最初我也這麼認為,但這的確蒙蔽了你那水靈靈的小眼睛,不妨看看什麼是引用?a 10 b a b 20 var dump a,b 在這段極其簡單的 中,b是 a的引用,也即是別名,修改 b,a會變,反之亦然。這就是所謂的引用,那物件是不是也是...

PHP中物件是按值傳遞還是按引用傳遞?

1.首先,什麼是按值傳遞和按引用傳遞?按值傳遞就是僅僅把值傳遞過去,相當於傳遞的是值的拷貝,而按引用傳遞傳遞的是記憶體的位址。按引用傳遞的特點 a 2 b a 按引用傳遞 a 1 echo b 1 b 3 echo a 3 2.現證明php中物件不是按引用傳遞 class test test1 ne...

php陣列是值傳遞,物件是引用傳遞

例項 1 陣列值傳遞 function main function change cc main output array 2 2 陣列引用傳遞 function main function change cc main outpout array 1 3 類物件值傳遞 class ppfuncti...