ภาษา PHP เปิดโอกาสให้เราสามารถเลือกหรือเปลี่ยนชื่อของตัวแปรได้
ตัวอย่างเช่น
| <?
$a = "var1";
$$a = 10.3;
echo "$a ${$a} $$a <BR>\n";
echo "$var1 <BR>\n";
?>
|
จากตัวอย่างข้างบน
เรากำหนดให้ตัวแปร $a เก็บสตริงค์ "var1" และจะใช้เป็นชื่อของตัวแปรอีกตัวหนึ่ง
โดยทางอ้อม $$a เป็นการอ้างถึงตัวแปรที่มีชื่อเดียวกับค่าของตัวแปร
$a (ในกรณีนี้คือ var1) ดังนั้นถ้าเราเขียนว่า $$a หรือ $var1
ก็หมายถึงตัวแปรตัวเดียวกัน ถ้าต้องการแสดงค่าของ $$a โดยใช้คำสั่ง
echo โดยอยู่ในสตริงค์ (ระหว่าง double quotations) เราจะต้องเขียน
${$a} ไม่ใช่ $$a เพราะว่า ถ้าเขียนตามแบบหลัง ตัวแปลคำสั่งจะอ่านค่า
$a ก่อนแล้วแทนที่ลงในข้อความ ซึ่งจะได้ $var1แทนที่จะเป็นการอ่านค่าของ
$var1
เทคนิคนี้ยังสามารถใช้ได้กับฟังก์ชัน ตัวอย่างเช่น
<?
function foobar()
{
echo
"foobar<BR>\n";
}
function callFunc
($f) {
if ( is_string($f)
== true) {
$f();
}
}
callFunc("foobar");
?>
|
ตัวอย่างข้างบนอาจจะทำให้เกิดปัญหาถ้าสมมุติว่า $f เป็นชื่อของฟังก์ชันที่ไม่มีอยู่จริง
วิธีตรวจสอบคือ การใช้ฟังก์ชัน function_exists() ดังต่อไปนี้
<?
function MyFunc() {
print ("ok..<BR>\n");
}
$f="myFunc";
if ( function_exists($f)
) {
$f();
}
else {
echo "$f does
not exist!";
}
?>
|
|