บทนำ
ใน PHP สามารถตั้งชื่อตัวแปรแบบไดนามิกได้ ตัวแปรแบบนี้ใช้ค่าของตัวแปรที่มีอยู่เป็นชื่อ ตัวแปรตัวแปร (variable variable) ถูกกำหนดด้วยเครื่องหมาย $ สองตัวเป็น prefix
ตัวอย่าง
<?php $var1 = "xyz"; // normal variable $$var1 = "abcd"; // variable variable echo $var1 . "\n"; echo $$var1 . "\n"; echo "{$$var1} $xyz"; ?>ผลลัพธ์
สคริปต์นี้ให้ผลลัพธ์ดังนี้
xyz abcd abcd abcd
โปรดทราบว่าค่าของ $$var1 เท่ากับ $xyz โดย xyz เป็นค่าของ $var1
ค่าตัวเลขของ normal variable ไม่สามารถใช้เป็น variable variable ได้
ตัวอย่าง
<?php $var1 = 100; // normal variable $$var1 = 200; // variable variable echo $var1 . "\n"; echo $$var1 . "\n"; echo $100; ?>
ผลลัพธ์
เมื่อรันสคริปต์นี้ จะได้ผลลัพธ์ดังนี้
PHP Parse error: syntax error, unexpected '100' (T_LNUMBER), expecting variable (T_VARIABLE) or '{' or '$' line 6ยังสามารถกำหนด variable variable ในรูปของ array subscript ได้ ในตัวอย่างต่อไปนี้ variable variable ถูกกำหนดโดยใช้ element ที่ 0 ของ normal array
ตัวอย่าง
<?php $var1 = array("aa", "bb"); // normal variable ${$var1[0]} = 10; // variable variable with array element echo $var1[0] . "\n"; echo $aa . "\n"; echo ${$var1[0]} . "\n"; ?>ผลลัพธ์
จะได้ผลลัพธ์ดังนี้
aa 10 10
Class properties ก็เข้าถึงได้ด้วย variable property names ฟีเจอร์นี้มีประโยชน์เมื่อ property name ประกอบด้วย array
ตัวอย่าง
<?php class branches { var $u = "Architecture"; var $ugCourses = array("CSE", "MECH", "CIVIL"); } $obj = new branches(); $courses = "ugCourses"; echo $obj->{$courses[0]} . "\n"; echo $obj->{$courses}[0] . "\n"; ?>ผลลัพธ์
จะได้ผลลัพธ์ดังนี้
Architecture CSE