การอ้างอิงใน PHP

ใน PHP เราสามารถกำหนดค่า จากตัวแปรหนึ่งให้กับอีกตัวแปรหนึ่งได้:

php<?php
  $num1 = 1;
  $num2 = $num1; // กำหนดค่า
  
  echo $num1; // 1
  echo $num2; // 1
?>

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

php<?php
  $num1 = 1;
  $num2 = $num1;
  $num2 = 2;
  
  echo $num1; // 1 - ไม่มีการเปลี่ยนแปลง
?>

อย่างไรก็ตาม เราสามารถทำให้ ไม่ได้คัดลอกค่าของตัวแปร แต่คัดลอก การอ้างอิง ไปยังค่านั้นได้ ในกรณีนี้ เมื่อค่าของตัวแปรหนึ่งเปลี่ยนแปลง ค่าของอีกตัวแปรหนึ่งก็จะเปลี่ยนแปลงไปด้วย

การที่จะส่งค่าด้วยการอ้างอิง ต้องใส่เครื่องหมายแอมเพอร์แซนด์ (&) นำหน้าชื่อตัวแปร:

php<?php
  $num1 = 1;
  $num2 = &$num1; // ส่งผ่านโดยการอ้างอิง
?>

ตอนนี้การเปลี่ยนแปลงตัวแปรแรก จะทำให้ตัวแปรที่สองเปลี่ยนแปลงไปด้วย:

php<?php
  $num1 = 1;
  $num2 = &$num1;
  $num2 = 2;
  
  echo $num1; // 2 - เปลี่ยนแปลงแล้ว
?>

ในทำนองเดียวกัน หากเราเปลี่ยน ค่าของตัวแปรแรก ค่าของตัวแปรที่สอง ก็จะเปลี่ยนแปลงไปด้วย:

php<?php
  $num1 = 1;
  $num2 = &$num1;
  $num1 = 2;
  
  echo $num2; // 2
?>
Задание 1

บอกหน่อยว่า ผลลัพธ์ ของโค้ดต่อไปนี้จะเป็นอย่างไร:

php<?php
  $num1 = 1;
  $num2 = $num1;
  $num2 = 2;
  
  echo $num1;
  echo $num2;
?>
Задание 2

บอกหน่อยว่า ผลลัพธ์ ของโค้ดต่อไปนี้จะเป็นอย่างไร:

php<?php
  $num1 = 1;
  $num2 = &$num1;
  $num2++;
  
  echo $num1;
  echo $num2;
?>
Задание 3

บอกหน่อยว่า ผลลัพธ์ ของโค้ดต่อไปนี้จะเป็นอย่างไร:

php<?php
  $num1 = 1;
  $num2 = $num1;
  
  $num1++;
  $num2++;
  
  echo $num1;
  echo $num2;
?>
Задание 4

บอกหน่อยว่า ผลลัพธ์ ของโค้ดต่อไปนี้จะเป็นอย่างไร:

php<?php
  $num1 = 1;
  $num2 = &$num1;
  
  $num1++;
  $num2++;
  
  echo $num1;
  echo $num2;
?>