שמות משתנים שמשתנים

לעיתים זה נוח להשתמש בשמות משתנים - משתנים. כלומר, שם משתנה יכול להקבע על-ידי התוכנית בצורה דינאמית. משתנה רגיל מקבל הצבה באמצעות פקודה כגון:

$a = "hello";

משתנה ששמו משתנה לוקח את הערך של המשתנה ומתייחס אליו כאל שם משתנה. בדוגמה הקודמת, המחרוזת hello יכולה לשמש גם כשם משתנה על-ידי שימוש בשני סימני דולר:

$$a = "world";

בנקודה זו מוגדרים שני משתנים בטבלת הסמלים של PHP. המשתנה $a שערכו "hello" והמשתנה $hello שערכו "world". כפועל יוצא, הפקודה:

echo "$a ${$a}";

מייצרת פלט הזהה לפלט של:

echo "$a $hello";

שתי הדוגמאות ידפיסו: hello world.

כדי להשתמש בשם משתנה משתנה עם מערכים יש לפתור בעיית כפל משמעות. כלומר, כאשר כותבים $$a[1] המפרש צריך לדעת אם להשתמש ב- $a[1] כהגדרת שם למשתנה או להשתמש ב- $$a כמשתנה בעל האינדקס [1] במערך. התחביר לפתירת כפילות זו הוא : ${$a[1]} במקרה בראשון ו ${$a}[1] במקרה השני.