Mặc định PHP truyền đối số theo giá trị: thay đổi bên trong hàm không ảnh hưởng biến ngoài. Để hàm sửa đổi biến gốc, truyền theo tham chiếu bằng dấu & trong định nghĩa hàm.
Pass By Reference
<?php
function increment(&$a) {
$a++;
}
$a = 5;
increment($a);
echo $a; // 6
?>
Biến $a thay đổi cả bên ngoài hàm.
Pass By Value (mặc định)
<?php
function increment($a) {
$a++;
echo $a . "
"; // 6
}
$a = 5;
increment($a);
echo $a; // 5 (giữ nguyên)
?>
Lưu ý
- Dấu
&chỉ ở định nghĩa hàm, không ở lời gọi. - Truyền tham chiếu lúc gọi (
func(&$a)) DEPRECATED từ PHP 5.4.