PHP中傳值賦值運算將變量的值拷貝到新的變量中几睛,所以改變其中一個不會影響另外一個。普通的傳值賦值行為中有個例外就是對象賦值有鹿。
class SimpleClass{
public $var='';
}
$instance=newSimpleClass();
$assigned=$instance;
$reference=&$instance;
$instance->var='$assigned will have this value';
$instance=null;// $instance and $reference become nullvar_dump($instance);
var_dump($reference);
var_dump($assigned);
輸出:
NULL
NULL
object(SimpleClass)#1 (1) {["var"]=>string(30) "$assigned will have this value"}
分析代碼:
$instance=newSimpleClass();//新建實例霞扬,$instance指向這個對象
$assigned=$instance;//$assigned也指向$instance所指向的對象
$reference=&$instance;//$reference指向$instance
如圖:
$instance->var='$assigned will have this value';//給對象的var屬性賦值
$instance = null;//$instance指向空寄狼,而$assigned還指向?qū)ο?br>
參考:
https://www.zhihu.com/question/35710455