משתני משתנים
לפעמים זה נוח שיהיה לך שמות משתנים משתנים. כלומר שם משתנה אותו אפשר לאתחל ולהשתמש בו באופן דינאמי. משתנה נורמאלי מאותחל על ידי משפט שכזה:
<?php
$a = "hello";
?>
משתנה למשתנה לוקח את ערכו של המשתנה ומתייחס אליו כאל שם של משתנה אחר. בדוגמא שלעיל, hello, יכול להיות שמיש כשם משתנה אחר על ידי שימוש בשני סימני דולר:
<?php
$$a = "world";
?>
כרגע, שני משתנים הוגדרו: $a שערכו "hello" ו $hello אשר ערכו "world". לכן ההצהרה:
<?php
echo "$a ${$a}";
?>
מייצר בדיוק אותו פלט כמו:
<?php
echo "$a $hello";
?>
דהיינו שניהם מייצרים: hello world.
על מנת להשתמש במשתני משתנים יחד עם מערכים, עליך לפתור בעיית עמימות, דהיינו להבהיר לPHP למה אתה מתכוון בדיוק. כלומר, אם אתה כותב $$a[1] מנתח השפה צריך לדעת האם בכוונתך להשתמש ב$a[1] כמשתנה, או אם ברצונך ש $$a יהיה המשתנה ו [1] אינדקס עבור אותו משתנה. התחביר בו משתמשים לפתור את בעיית העמימות הוא: ${$a[1]} עבור האופציה הראשונה, ו ${$a}[1] עבור השניה.
שים לב, שאין להשתמש במשתני משתנים יחד עם מערכים סופר גלובאליים. כלומר אתה לא יכול לעשות משהו כמו ${$_GET}. אם בכל זאת אתה צריך לעשות את זה לסופר גלובאליים או למערכים הישנים בפורמט HTTP_*_VARS, אז אולי כדאי לך לנסות ב מכוונים.