🔄 ما هي 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
لتغطية الحالات غير المتوقعة. - لا تستخدمها إذا كانت الشروط تعتمد على عمليات حسابية أو منطقية معقدة.