แนะนำตัว
ใน PHP ข้อมูลอ้างอิง เปิดใช้งานการเข้าถึงเนื้อหาตัวแปรเดียวกันโดยใช้ชื่อต่างกัน พวกมันไม่เหมือนพอยน์เตอร์ใน C/C++ เนื่องจากมันเป็นไปไม่ได้ที่จะทำการคำนวณทางคณิตศาสตร์โดยใช้พวกมัน ใน C/C++ เป็นที่อยู่หน่วยความจำจริง ในทางตรงกันข้าม PHP เป็นนามแฝงของตารางสัญลักษณ์ ใน PHP ชื่อตัวแปรและเนื้อหาตัวแปรต่างกัน ดังนั้นเนื้อหาเดียวกันจึงสามารถมีชื่อต่างกันได้ ตัวแปรอ้างอิงถูกสร้างขึ้นโดยนำหน้า & ลงนามในตัวแปรเดิม ดังนั้น $b=&$a จะหมายความว่า $b เป็นตัวแปรอ้างอิงของ $a
กำหนดโดยอ้างอิง
ในตัวอย่างต่อไปนี้ ตัวแปรสองตัวอ้างถึงค่าเดียวกัน
ตัวอย่าง
<?php $var1=10; $var2=&$var1; echo "$var1 $var2\n"; $var2=20; echo "$var1 $var2\n"; ?>
ผลลัพธ์
การเปลี่ยนแปลงมูลค่าของสิ่งหนึ่งจะมีผลกับอีกสิ่งหนึ่งด้วย
10 10 20 20
หากคุณกำหนด ส่งผ่าน หรือส่งคืนตัวแปรที่ไม่ได้กำหนดโดยการอ้างอิง ตัวแปรจะถูกสร้างขึ้น การกำหนดการอ้างอิงให้กับตัวแปรที่ประกาศไว้ทั่วโลกภายในฟังก์ชัน การอ้างอิงจะมองเห็นได้เฉพาะภายในฟังก์ชันเท่านั้น เมื่อกำหนดค่าให้กับตัวแปรที่มีการอ้างอิงในคำสั่ง foreach การอ้างอิงจะถูกแก้ไขด้วย
ตัวอย่าง
<?php $arr=[1,2,3,4,5]; $i=&$ref; foreach($arr as $i) echo $i*$i, "\n"; echo "ref = ". $ref; ?>
ผลลัพธ์
ค่าของ $ref เก็บค่าขององค์ประกอบสุดท้ายในอาร์เรย์
1 4 9 16 25 ref = 5
ในตัวอย่างต่อไปนี้ องค์ประกอบอาร์เรย์คือการอ้างอิงถึงตัวแปรแต่ละตัวที่ประกาศก่อนการเริ่มต้นอาร์เรย์ หากองค์ประกอบถูกแก้ไข ค่าของตัวแปรก็จะเปลี่ยนไปด้วย
ตัวอย่าง
<?php $a = 10; $b = 20; $c=30; $arr = array(&$a, &$b, &$c); for ($i=0; $i<3; $i++) $arr[$i]++; echo "$a $b $c"; ?>
ผลลัพธ์
ค่าของ $a, $b และ $c ก็เพิ่มขึ้นเช่นกัน
11 21 31