ทำความเข้าใจ PHP: ตัวแปรถูกส่งโดย ค่า หรือ อ้างอิง?

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

พื้นฐานของการส่งตัวแปรใน PHP

ใน PHP เมื่อคุณส่งพารามิเตอร์ไปยังฟังก์ชันสามารถทำได้สองวิธี:

  1. โดยค่า

    • สำเนาของค่าของตัวแปรจะถูกส่งไปยังฟังก์ชัน
    • การเปลี่ยนแปลงที่ทำภายในฟังก์ชันจะไม่กระทบต่อค่าตัวแปรดั้งเดิม
  2. โดยอ้างอิง

    • การอ้างอิงไปยังตัวแปรดั้งเดิมจะถูกส่งไปยังฟังก์ชัน
    • ดังนั้นการเปลี่ยนแปลงใดๆ ที่ทำภายในฟังก์ชันจะมีผลโดยตรงต่อค่าตัวแปรดั้งเดิม

พฤติกรรมเริ่มต้นของ PHP

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

ตัวอย่างการส่งโดยค่า

function changeValue($var) {
    $var = "ค่าใหม่";
}

$value = "ค่าต้นฉบับ";
changeValue($value);
echo $value; // แสดงผล: ค่าต้นฉบับ

ในตัวอย่างข้างต้น ฟังก์ชัน changeValue ไม่ได้เปลี่ยนค่า $value แสดงให้เห็นถึงพฤติกรรมการส่งโดยค่า

วิธีการส่งตัวแปรโดยอ้างอิง

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

ตัวอย่างการส่งโดยอ้างอิง

นี่คือตัวอย่างการใช้งานจริงที่แสดงวิธีการส่งตัวแปรโดยอ้างอิงใน PHP:

function add_some_extra(&$string) {
    $string .= ' และข้อมูลเพิ่มเติม.';
}

$str = 'นี่คือตัวอักษร,';
add_some_extra($str);
echo $str;    // แสดงผล: นี่คือตัวอักษร, และข้อมูลเพิ่มเติม.

การวิเคราะห์ตัวอย่าง:

  • การกำหนดฟังก์ชัน: &$string หมายถึงว่าตัวแปร $string ถูกส่งโดยอ้างอิง
  • การดัดแปลง: ภายในฟังก์ชันสายอักขระจะถูกดัดแปลงโดยการต่อสายอักขระอีกชุดเข้ามา
  • ผลลัพธ์: สายอักขระต้นฉบับ $str แสดงถึงการเปลี่ยนแปลงนี้ แสดงให้เห็นว่ามันถูกดัดแปลงนอกฟังก์ชันด้วย

สรุป

การทำความเข้าใจว่าตัวแปร PHP ถูกส่งโดย ค่า หรือ อ้างอิง เป็นสิ่งจำเป็นสำหรับการเขียนโปรแกรมอย่างมีประสิทธิภาพ โดยตามค่าเริ่มต้น PHP จะทำงานในรูปแบบการส่งโดยค่า ซึ่งช่วยรักษาความถูกต้องของข้อมูลดั้งเดิม อย่างไรก็ตาม เมื่อมีความจำเป็นต้องดัดแปลง การส่งตัวแปรโดยอ้างอิงจะช่วยให้มีความยืดหยุ่นในการแก้ไขค่าตัวแปรดั้งเดิมได้โดยตรง

ข้อคิดสำคัญ

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

ไม่ว่าคุณจะเป็นมือใหม่หรือต้องการปรับปรุงทักษะ PHP ของคุณ การรู้วิธีการจัดการการส่งตัวแปรสามารถช่วยเพิ่มความสามารถในการเขียนโค้ดของคุณได้อย่างมาก ขอให้สนุกกับการเขียนโค้ด!