هذا لا يخص PHP فقط، بل الكثير من لغات البرمجة، الأول من اسمه(Variable) هو قيمة بعنوان في الذاكرة متغيرة، ثابت في الاسم -مُتغير في القيمة- وفي PHP متغير في النوع أيضًا، أي عند تعريفك متغير باسم name يمكنك جعله اسمًا نصيًا، رقمًا، قيمة منطقية ..، يسمح بتغيير قيمته ونوعه بدون اسمه.
والثابت(Constant) هي قيمة في الذاكرة ثابتة النوع، الاسم والقيمة، وفي PHP يوجد طريقة أخرى غير المفتاح const لتعريف الثوابت وهي الوظيفة define، بالطبع وبسبب الترقيعات في هاته اللغة ستجد بعض الإختلافات التي جعلتهم يرقعون نوعين:
<?php
$name = "A name";
$name = strlen($name); // 6
$name = $name == 6; // true
const age = 32;
const age = true; // خطأ
const age = 12; // خطأ أيضًا
define("USER_AGE", 32); // ثابت آخر
هو يسأل عن الفرق، لهذا توقعتُ أنه يعرف أن المتغيرات متغيرة والثوابت ثابتة! فهذا منطقي أصلًا!، ويسأل عن فروقات أخرى، عمومًا، ما قلته كان بسيطًا وسطحيًا جدًا، أجد بعض الكتب المتخصصة تشرح ذاك في عدة صفحات، التبسيط ليس دائمًا جيدًا، بل مضرٌ لو اعتمدتَ عليه طوال الوقت وW3School مثلًا تعرض لك الأمور السطحية ولا تعرض لك التفاصيل المملة التي تجدها في التوثيقات توثيقات مثل MDN والتوثيق الرسمي لـES إن نتحدث عن JavaScript، مما يجعلها تضر بالمبرمج يعرف بالكاد كيف يكتب ..