圖示所寫 變量賦的值為對象類型默認是引用傳值。也就是指向同一個內(nèi)存空間
下面給出另一段代碼和結(jié)果圖
結(jié)果如下
問題:既然變量賦值類型為對象都是引用傳值,為什么結(jié)果來看,$assigned更像是賦值傳值,如果是引用傳值,改變?yōu)閚ull,三個變量不是都應該為null嗎?!
3 回答

浮云間
TA貢獻1829條經(jīng)驗 獲得超4個贊
不知道你知不知道深復制和淺復制,值的復制,是深復制,就是說改變了就改變了,不會影響另外一個:例如
$a=1;
$b=$a;
$a=2
echo $a;//2
echo $b;//1
對象的復制是淺復制,他的更改會影響到另外一個,這個樓主你應該懂,所以,當assigned=$instance,后,對instance的修改,會影響assigned ,如果沒有最后的null,$instance和assigned是一樣的。關(guān)鍵就是最后的null,null其實也是一個對象,說到這里,我相信你應該明白了,$instance=null,這個時候,instance被指向了另外一個對象(跟assigned沒半毛錢關(guān)系了),而reference又是指向instance,跟著也指向了null對象,所以你明白了么?
- 3 回答
- 0 關(guān)注
- 704 瀏覽
添加回答
舉報
0/150
提交
取消