جملة switch في PHP — شرح الكود والنتيجة
في الدرس السابق استخدمنا else if للتعامل مع عدة حالات.
لكن عندما يكون عندنا متغير واحد ونريد مقارنته بقيم كثيرة، تكون switch غالباً أوضح.
ما هي جملة switch في PHP؟
جملة switch تختار حالة واحدة من عدة حالات case بناءً على قيمة متغير واحد.
إذا لم يحدث أي تطابق، يتم تنفيذ default.
الهيكل العام لجملة switch
الكود:
switch ($variable) {
case "value1":
// كود الحالة الأولى
break;
case "value2":
// كود الحالة الثانية
break;
default:
// كود افتراضي
}
شرح الكود: PHP تقارن قيمة المتغير بكل case بالترتيب. عند أول تطابق تنفذ الكود ثم تتوقف بسبب break.
مثال 1: لون مفضل
الكود:
<?php
$favColor = "red";
switch ($favColor) {
case "red":
echo "لونك المفضل هو الأحمر!";
break;
case "blue":
echo "لونك المفضل هو الأزرق!";
break;
default:
echo "لونك المفضل غير معروف لدينا.";
}
?>
ما يظهر في المتصفح:
لونك المفضل هو الأحمر!
شرح الكود: قيمة $favColor هي red، لذلك تطابقت مع أول حالة وطُبعت الرسالة الأولى ثم خرج البرنامج من switch بسبب break.
مثال 2: رقم اليوم
الكود:
<?php
$dayNumber = 5;
switch ($dayNumber) {
case 1:
echo "الاثنين";
break;
case 2:
echo "الثلاثاء";
break;
case 5:
echo "الجمعة";
break;
default:
echo "رقم يوم غير معروف";
}
?>
ما يظهر في المتصفح:
الجمعة
شرح الكود: البرنامج فحص الحالات بالترتيب حتى وصل إلى case 5 فطابق القيمة وطبع "الجمعة".
مثال 3: ماذا يحدث بدون break؟
الكود:
<?php
$x = 1;
switch ($x) {
case 1:
echo "واحد ";
case 2:
echo "اثنان";
break;
}
?>
ما يظهر في المتصفح:
واحد اثنان
شرح الكود: لأن break غير موجودة بعد case 1، استمر التنفيذ إلى case 2. هذا يسمى fall-through.
break إلا إذا كنت تريد عمداً تنفيذ الحالات التالية.
متى نستخدم switch ومتى نستخدم else if؟
- استخدم
switchعندما تقارن متغيراً واحداً بقيم متعددة ثابتة. - استخدم
if / else ifعندما تكون الشروط معقدة (مقارنات، نطاقات، شروط مركبة).
أخطاء شائعة في switch
- نسيان
breakداخل الحالات. - عدم كتابة
defaultكمسار احتياطي. - استخدام switch في منطق معقد كان أنسب له if/else.
- عدم الانتباه لنوع القيم أثناء المقارنة.
تمرين سريع
- أنشئ متغير
$roleبقيمة"editor". - اكتب switch تطبع رسالة مختلفة لكل دور:
admin,editor,user. - أضف
defaultلعرض رسالة "دور غير معروف".
الأسئلة الشائعة — FAQ
متى أستخدم switch بدلاً من if else if؟
عندما تقارن متغيراً واحداً بقيم ثابتة متعددة.
ما وظيفة break؟
توقف التنفيذ داخل switch بعد أول حالة مطابقة.
ما وظيفة default؟
مسار احتياطي عندما لا تتطابق أي حالة.
هل switch تقارن النوع بدقة دائماً؟
المقارنة في switch قد تكون مرنة في بعض الحالات، لذلك انتبه لنوع القيمة عند كتابة الحالات.
بعد هذا الدرس، انتقل إلى: الحلقة for في PHP.