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

Pass By Reference และ Pass By Value ใน PHP คืออะไร?


ในบทความนี้ เราจะเรียนรู้เกี่ยวกับการส่งผ่านค่าและการอ้างอิงใน PHP

ตอนนี้ มาทำความเข้าใจแนวคิดทั้งสองนี้โดยละเอียดกัน

โดยทั่วไปใน PHP เราติดตามเพื่อส่งต่ออาร์กิวเมนต์ไปยังฟังก์ชันด้วยวิธีการส่งผ่านค่า เรากำลังปฏิบัติตามแนวทางปฏิบัตินี้เพราะหากค่าของอาร์กิวเมนต์ภายในฟังก์ชันมีการเปลี่ยนแปลง ค่าดังกล่าวจะไม่เปลี่ยนแปลงนอกฟังก์ชัน

ในบางกรณี เราอาจจำเป็นต้องแก้ไขอาร์กิวเมนต์ของฟังก์ชัน ดังนั้นเพื่อให้ฟังก์ชันแก้ไขอาร์กิวเมนต์ได้ อาร์กิวเมนต์ดังกล่าวต้องส่งผ่านโดยการอ้างอิง

เริ่มต้นด้วยการผ่านโดยการอ้างอิง ดังที่ได้กล่าวไปแล้วเราสามารถส่งผ่านตัวแปรโดยอ้างอิงถึงฟังก์ชันเพื่อให้ฟังก์ชันสามารถแก้ไขตัวแปรได้ ในการเริ่มต้นกระบวนการส่งพารามิเตอร์ที่ส่งโดยการอ้างอิง ให้เติมเครื่องหมายและ (&) หน้าชื่ออาร์กิวเมนต์ในนิยามฟังก์ชัน

ตัวอย่าง

มาทดสอบกันโดยใช้ตัวอย่างง่ายๆ

<?php
   function calculate(&$a){
      $a++;
   }
   $a=5;
   calculate($a);
   echo $a;
?>

ผลลัพธ์

6

คำอธิบาย

ที่นี่เราได้ประกาศตัวแปร $a และส่งผ่านโดยการอ้างอิงไปยังฟังก์ชัน คำนวณ () ตามหลักการที่ว่าถ้าค่าของ $a เปลี่ยนไปในฟังก์ชัน ค่าก็จะเปลี่ยนไปนอกฟังก์ชันด้วย

หมายเหตุ

ไม่มีเครื่องหมายอ้างอิงในการเรียกใช้ฟังก์ชัน - เฉพาะในข้อกำหนดของฟังก์ชันเท่านั้น คำจำกัดความของฟังก์ชันเพียงอย่างเดียวก็เพียงพอที่จะส่งผ่านอาร์กิวเมนต์ได้อย่างถูกต้องโดยการอ้างอิง สิ่งนี้เลิกใช้แล้วใน PHP เวอร์ชัน 5.4 เมื่อคุณใช้เพื่อคำนวณ(&$a); มันเกิดข้อผิดพลาด

ตัวอย่าง

มาทดสอบตัวอย่างกันเพื่อทำความเข้าใจผ่านค่า

<?php
   function calculate($a){
      $a++;
   echo $a."<br/>";
   }
   $a=5;
   calculate($a);
   echo $a;
?>

ผลลัพธ์

6
5

คำอธิบาย

ที่นี่เราได้ส่งค่าไปยังฟังก์ชัน คำนวณ () ผ่านค่า ค่าของมันถูกเปลี่ยนแปลงภายในฟังก์ชันแต่จะไม่สะท้อนออกมาภายนอกฟังก์ชัน ค่าของตัวแปรยังคงเหมือนเดิมนอกฟังก์ชัน