ใน PHP โดยทั่วไป ส่งอาร์กิวเมนต์ให้ฟังก์ชันแบบ Pass By Value หากค่าของอาร์กิวเมนต์เปลี่ยนภายในฟังก์ชัน จะไม่ส่งผลนอกฟังก์ชัน แต่บางครั้งต้องการให้ฟังก์ชันแก้ไขอาร์กิวเมนต์ ต้องส่งแบบ Pass By Reference โดยใส่ & ก่อนชื่อตัวแปรในการประกาศฟังก์ชัน
ตัวอย่าง Pass By Reference
<?php
function calculate(&$a){
$a++;
}
$a = 5;
calculate($a);
echo $a;
?>
ผลลัพธ์
6
คำอธิบาย
$a ถูกส่งแบบ reference ค่าเปลี่ยนในฟังก์ชันส่งผลนอกฟังก์ชันด้วย
หมายเหตุ
ไม่ต้องใส่ & ตอนเรียกฟังก์ชัน แค่ในการประกาศฟังก์ชันพอ ใน PHP 5.4+ เรียกแบบ calculate(&$a) จะ deprecated
ตัวอย่าง Pass By Value
<?php
function calculate($a){
$a++;
echo $a."<br/>";
}
$a = 5;
calculate($a);
echo $a;
?>
ผลลัพธ์
6 5
คำอธิบาย
ส่งแบบ value ค่าเปลี่ยนในฟังก์ชัน แต่นอกฟังก์ชันค่าเดิมไม่เปลี่ยน