php 提供值傳遞和引用傳遞兩種參數(shù)傳遞機(jī)制。引用傳遞使用 & 符號將參數(shù)的內(nèi)存地址傳遞給函數(shù),從而可以修改原始變量。引用傳遞適用于修改傳遞的參數(shù)或提高性能(對于大型數(shù)據(jù)結(jié)構(gòu))。
PHP 引用傳遞:深入理解函數(shù)參數(shù)傳遞機(jī)制
簡介
PHP 中有兩種函數(shù)參數(shù)傳遞機(jī)制:值傳遞和引用傳遞。默認(rèn)情況下,所有參數(shù)都被按值傳遞。值傳遞簡單地將參數(shù)的一個(gè)副本傳遞給函數(shù),而引用傳遞則將參數(shù)的原始內(nèi)存地址傳遞給函數(shù)。
引用傳遞語法
要將參數(shù)作為引用傳遞,請使用符號 & 作為函數(shù)參數(shù)前綴。例如:
function foo(&$param) { // 對 $param 進(jìn)行操作,這將影響原始變量 }
登錄后復(fù)制
何時(shí)使用引用傳遞?
引用傳遞在以下情況下很有用:
修改傳遞給函數(shù)的參數(shù)通過節(jié)省內(nèi)存來提高性能(對于大型數(shù)據(jù)結(jié)構(gòu))
實(shí)戰(zhàn)案例
案例 1:修改傳遞的參數(shù)
$arr = [1, 2, 3]; function modifyArray(&$arr) { $arr[0] = 10; } modifyArray($arr); echo implode(", ", $arr); // 輸出:10, 2, 3
登錄后復(fù)制
案例 2:提高性能
function processData($data) { // 對 $data 進(jìn)行處理,這可能會消耗大量內(nèi)存 } $data = [大量數(shù)據(jù)]; // 按值傳遞將復(fù)制整個(gè)數(shù)據(jù)集,而按引用傳遞則只傳遞一個(gè)引用 processData(&$data);
登錄后復(fù)制
參考
[PHP 手冊:參數(shù)傳遞](https://www.php.net/manual/zh/language.parameters.pass.php)
[PHP 中的值傳遞和引用傳遞](https://www.w3resource.com/php-exercises/php-variable-exercise-2.php)