在 php 中,函數可以按值或按引用傳遞變量。按值傳遞復制變量的值,按引用傳遞傳遞變量的引用本身。按引用傳遞需要在參數前使用 & 符號。按引用傳遞變量的好處是函數可以修改原始變量的值。但需要注意按引用傳遞會使代碼更難調試,并可能導致對象循環引用和內存泄漏。
深入淺出:PHP 函數中引用傳遞的機制
在 PHP 中,函數可以按值傳遞或按引用傳遞變量。按值傳遞復制變量的值,而按引用傳遞則傳遞變量的引用本身。
按值傳遞
function setValue($val) { $val = 10; } $a = 5; setValue($a); echo $a; // 輸出:5
登錄后復制
setValue() 函數作用于變量 $val 的副本,因此對副本的修改不會影響變量 $a 的原始值。
按引用傳遞
要按引用傳遞變量,需要在參數前使用符號 &。
function setRef(&$val) { $val = 10; } $a = 5; setRef($a); echo $a; // 輸出:10
登錄后復制
setRef() 函數作用于變量 $a 的引用,因此對引用值的修改也會修改變量 $a 的原始值。
實戰案例
以下示例展示了按引用傳遞數組:
function modifyArray(&$arr) { $arr[] = 10; } $arr = [1, 2, 3]; modifyArray($arr); print_r($arr); // 輸出:[1, 2, 3, 10]
登錄后復制
modifyArray() 函數作用于數組 $arr 的引用,因此在函數中對數組的修改會反映在原始數組中。
注意事項
按引用傳遞會使代碼更難調試,因為變量的值可以在函數外意外改變。
僅在需要修改函數外部變量時才使用按引用傳遞。
在按引用傳遞對象時要小心,因為這可能導致對象循環引用和內存泄漏。