جملة 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.
  • عدم الانتباه لنوع القيم أثناء المقارنة.

تمرين سريع

  1. أنشئ متغير $role بقيمة "editor".
  2. اكتب switch تطبع رسالة مختلفة لكل دور: admin, editor, user.
  3. أضف default لعرض رسالة "دور غير معروف".

الأسئلة الشائعة — FAQ

متى أستخدم switch بدلاً من if else if؟

عندما تقارن متغيراً واحداً بقيم ثابتة متعددة.

ما وظيفة break؟

توقف التنفيذ داخل switch بعد أول حالة مطابقة.

ما وظيفة default؟

مسار احتياطي عندما لا تتطابق أي حالة.

هل switch تقارن النوع بدقة دائماً؟

المقارنة في switch قد تكون مرنة في بعض الحالات، لذلك انتبه لنوع القيمة عند كتابة الحالات.

بعد هذا الدرس، انتقل إلى: الحلقة for في PHP.

ممتاز! الآن صرت تعرف متى تستخدم switch وكيف تتحكم في تدفق الحالات باستخدام break وdefault بشكل صحيح.
المحرر الذكي

اكتب الكود وشاهد النتيجة فوراً

جرب الآن مجاناً
قناة ديف عربي

تابع أحدث الدروس والتحديثات مباشرة على واتساب

انضم الآن