משתנים ב-PHP מוגדרים עם סימן דולר - $variable_name, והם חייבים להתחיל באות או קו תחתון ויכולים להכיל בתוכם אותיות, ספרות וקוים תחתוניים. שמות המשתנים הם case-sensitive, כלומר יש הבחנה בין אותיות גדולות וקטנות (למשל: $Var שונה מ-$var).
ב-PHP3 המשתנים מיוחסים תמיד לפי ערכם (assigned by value), זאת אומרת שכאשר שמים משתנה אחד בתוך משתנה אחר, הערך מועתק מאחד לשני, ושינוי של משתנה אחד אינו משפיע על המשתנה האחר. ב-PHP4 יש גם ייחוס משתנים לפי מצביע (assigned by reference), וזאת עושים ע"י כתיבת & לפני המשתנה. אם שמים משתנה אחד במשתנה אחר ע"י ייחוס לפי מצביע, שינוי של אחד המשתנים ישפיע גם על האחר.
היחוס לפי מצביע עובד לשני הכיוונים ואני יסביר לך למה...
מה זה משתנה בעצם... מקום בזיכרון והשם שלו זה הפניה
לאותו מקום בזיכרון... מה שאתה עושה כשאתה מציב מצביע לתוך משתנה
אתה אומר לאותו משתנה להצביע לאותו מקום של מה שהכנסת
כלומר ששניהם מצביעים לאותו מקום בזיכרון
תעשה שיני בכל אחד מהם זה יעשה שינוי באותו מקום
בזיכרון ולכן ישפיע על שתיהם בצורה שווה...
תחשוב על שתי אנשים מצביעים על נקודה ברציפה עליה יש קופסה...
אם אני יזיז ת'קופסה וישים שם משהוא אחר... כרגע שניהם מצביעים על משהוא האחר נכון?
אותו עיקרון פועל כאן