PHP 預設為傳值賦值(複製值),使用 & 符號可建立傳址參考(指向同一記憶體位址)。範例展示修改原變數、參考變數時的行為差異。
<?php $name = 'Simon'; $name_b = $name; // 傳值賦值:複製一份 $addr = &$name; // 傳址賦值:參考同一變數 $name = 'Elaine'; // 修改原變數 echo $name; // Elaine echo $name_b; // Simon(未變) echo $addr; // Elaine(同步變更) $addr = 'Helen'; // 修改參考變數 echo $name; // Helen(同步變更) echo $addr; // Helen ?>
| 賦值方式 | 語法 | 行為 |
|---|---|---|
| 傳值 | $b = $a; | 複製值,兩變數獨立 |
| 傳址 | $b = &$a; | 指向同一 Zval,修改任一皆同步 |
function foo(&$var) 允許函式修改外部變數。foreach ($arr as &$v) $v *= 2;。call-time pass-by-reference(呼叫時加 &),只能在函式定義處宣告。$obj2 = $obj1 兩者指向同一實體;需複製物件請用 clone。