在 PHP 裡如果要傳遞參考 (call by address) 的話,有 2 種做法:
1. 呼叫函數時在變數前加上 &,例如:
add(&$x, $y);
此時 add() 的寫法沒有什麼不同:
function add($x, $y) { $x += $y; }
2. 在函數的參數加上 &,例如:
function add(&$x, $y) { $x += $y; }
呼叫時的寫法:
add($x, $y);
這裡有 3 個範例,注意每個範例最後輸出的 $x 與 $y 值:
1.
function add($x, $y) { $x += $y; }
$x = 1; $y = 2; add($x, $y);
echo "x = " . $x . "
" . "y = " . $y;
輸出:
x = 1 y = 2
2.
function add($x, $y) { $x += $y; }
$x = 1; $y = 2; add(&$x, $y); echo "x = " . $x . "
" . "y = " . $y;
輸出:
x = 3 y = 2
3.
function add(&$x, $y) { $x += $y; }
$x = 1; $y = 2; add($x, $y);
echo "x = " . $x . "
" . "y = " . $y;
輸出:
x = 3 y = 2
那麼,可不可以函數與呼叫函數時都加 & 呢?在 PHP 裡是可以的,並不會出錯,例如:
<?php function add(&$x, $y) { $x += $y; }
$x = 1; $y = 2; add(&$x, $y);
echo "x = " . $x . "
" . "y = " . $y; ?>
最後的結果一樣是:
x = 3 y = 2
--jollen