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