Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> PHP

Pass By Reference และ Pass By Value ใน PHP


ใน 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 ค่าเปลี่ยนในฟังก์ชัน แต่นอกฟังก์ชันค่าเดิมไม่เปลี่ยน