🔄 ما هي switch في PHP؟
جملة switch تُستخدم لمقارنة قيمة متغير مع عدة احتمالات (حالات)، وتنفيذ الكود الخاص بأول حالة تتطابق.
تشبه سلسلة if...elseif...else لكنها أوضح وأسهل قراءة عندما يكون لدينا العديد من الشروط المقارنة لنفس المتغير.
✅ الشكل العام:
switch (المتغير) {
case القيمة1:
// كود يتم تنفيذه إذا كانت المتغير = القيمة1
break;
case القيمة2:
// كود يتم تنفيذه إذا كانت المتغير = القيمة2
break;
default:
// كود يتم تنفيذه إذا لم تطابق أي حالة
}PHP✅ مثال بسيط:
$color = "أحمر";
switch ($color) {
case "أحمر":
echo "اللون هو أحمر";
break;
case "أزرق":
echo "اللون هو أزرق";
break;
case "أخضر":
echo "اللون هو أخضر";
break;
default:
echo "لون غير معروف";
}PHP🔎 شرح:
- يتم مقارنة
$colorمع كلcase. - عند تطابق القيمة، يتم تنفيذ الكود المتعلق بها.
- كلمة
breakتوقف تنفيذ الحالات التالية. - إذا لم تتطابق أي حالة، يتم تنفيذ
default.
✅ مثال عملي على درجات الطلاب:
$grade = "B";
switch ($grade) {
case "A":
echo "ممتاز";
break;
case "B":
echo "جيد جداً";
break;
case "C":
echo "جيد";
break;
case "D":
echo "مقبول";
break;
case "F":
echo "راسب";
break;
default:
echo "درجة غير صالحة";
}PHP✅ مثال بدون break (يُنتج ما يسمى بـ Fall-through):
$day = "الجمعة";
switch ($day) {
case "الخميس":
case "الجمعة":
echo "عطلة نهاية الأسبوع";
break;
case "السبت":
case "الأحد":
case "الاثنين":
case "الثلاثاء":
case "الأربعاء":
echo "يوم عمل";
break;
default:
echo "يوم غير صالح";
}PHP🔎 شرح:
- الحالتان الخميس والجمعة تنفذان نفس الكود.
- هذا يُستخدم لتجميع حالات متعددة تحت نفس الإجراء.
✅ استخدام switch مع أنواع مختلفة من القيم:
مثال مع الأرقام:
$number = 2;
switch ($number) {
case 1:
echo "واحد";
break;
case 2:
echo "اثنان";
break;
default:
echo "رقم غير معروف";
}PHPمثال مع Boolean ❌ (غير مفضل):
$status = true;
switch ($status) {
case true:
echo "الحالة صحيحة";
break;
case false:
echo "الحالة خاطئة";
break;
}PHP⚠️ ملاحظة: الأفضل استخدام
if...elseمع القيم المنطقية (true/false)، لأنswitchتعتمد على التطابق التام.
✅ أفضل أماكن استخدام switch
| الحالة | الأفضل استخدام |
|---|---|
| مقارنة متغير واحد بعدة قيم ثابتة | ✅ switch |
| مقارنة شروط مختلفة ومتعددة | ❌ استخدم if/elseif |
| عند وجود 3 حالات فأكثر لنفس المتغير | ✅ switch |
| الحالات المعتمدة على العمليات | ❌ استخدم if/elseif |
✅ ماذا يحدث إذا نسيت break؟
$fruit = "تفاح";
switch ($fruit) {
case "تفاح":
echo "تفاح<br>";
case "موز":
echo "موز<br>";
case "برتقال":
echo "برتقال<br>";
}PHPالناتج:
تفاح
موز
برتقال
PHP❗ لأنك لم تستخدم
break، انتقل البرنامج إلى جميع الحالات التالية.
✅ default في أي مكان؟
نعم. يمكن كتابة default في أي مكان، لكن الأفضل وضعه في النهاية.
✅ switch مقابل match (جديد من PHP 8)
match أسرع وأنظف أحيانًا، ويُعيد القيمة مباشرة بدون break.
$grade = 'B';
echo match($grade) {
'A' => 'ممتاز',
'B' => 'جيد جداً',
'C' => 'جيد',
default => 'غير معروف',
};PHP✅ خلاصة:
switchمناسبة إذا كنت تقارن نفس المتغير مع قيم متعددة.- تأكد دائمًا من استخدام
breakحتى لا تنتقل لباقي الحالات. - استخدم
defaultلتغطية الحالات غير المتوقعة. - لا تستخدمها إذا كانت الشروط تعتمد على عمليات حسابية أو منطقية معقدة.