/ دورة PHP الشاملة
0/13 مكتملة
🔀 الدرس 4 من 13

الجمل الشرطية

اتخاذ القرارات في الكود

🕐 30-45 دقيقة 📝 5 أسئلة 💻 3 أمثلة برمجية

if / else / elseif

الجمل الشرطية تسمح للكود باتخاذ قرارات مختلفة بناءً على شروط معينة.

الهيكل الأساسي:
if (شرط) {
    // كود ينفذ إذا الشرط صحيح
} elseif (شرط آخر) {
    // كود ينفذ إذا الشرط الثاني صحيح
} else {
    // كود ينفذ إذا كل الشروط خاطئة
}

يمكن إضافة أي عدد من elseif. الـ else اختياري.
PHP
<?php
$grade = 75;

if ($grade >= 90) {
    echo "تقدير: ممتاز (A)";
} elseif ($grade >= 80) {
    echo "تقدير: جيد جداً (B)";
} elseif ($grade >= 70) {
    echo "تقدير: جيد (C)";
} elseif ($grade >= 60) {
    echo "تقدير: مقبول (D)";
} else {
    echo "تقدير: راسب (F)";
}

echo "<br>";

// شروط مركبة
$age = 22;
$hasLicense = true;

if ($age >= 18 && $hasLicense) {
    echo "يمكنه قيادة السيارة ✅";
} else {
    echo "لا يمكنه القيادة ❌";
}
?>
الناتج المتوقع
تقدير: جيد (C) يمكنه قيادة السيارة ✅

switch / case

switch مفيد عندما تريد مقارنة متغير واحد بقيم متعددة. أكثر نظافةً من سلسلة طويلة من if/elseif.

مهم: لا تنسَ كتابة break في نهاية كل case، وإلا سيستمر التنفيذ في الـ case التالي (يُسمى Fall-through).

default مثل else — ينفذ عندما لا يطابق أي case.
PHP
<?php
$day = "الاثنين";

switch ($day) {
    case "السبت":
    case "الأحد":
        echo "عطلة نهاية الأسبوع 🎉";
        break;
    case "الاثنين":
        echo "بداية الأسبوع، قهوة إضافية! ☕";
        break;
    case "الجمعة":
        echo "آخر يوم عمل! 🙌";
        break;
    default:
        echo "يوم عمل عادي 💼";
}

echo "<br><br>";

// مثال عملي: حاسبة بسيطة
$op = "+";
$a = 10; $b = 5;

switch ($op) {
    case "+": echo "$a + $b = " . ($a + $b); break;
    case "-": echo "$a - $b = " . ($a - $b); break;
    case "*": echo "$a × $b = " . ($a * $b); break;
    case "/": echo "$a ÷ $b = " . ($a / $b); break;
    default:  echo "عملية غير معروفة";
}
?>
الناتج المتوقع
بداية الأسبوع، قهوة إضافية! ☕ 10 + 5 = 15

Ternary و Null Coalescing

المشغل الثلاثي (Ternary): اختصار لـ if/else في سطر واحد:
$result = (شرط) ? قيمة_إذا_صح : قيمة_إذا_خطأ;

Null Coalescing (??): يعيد القيمة الأولى إذا كانت موجودة وليست null، وإلا يعيد القيمة الثانية. مفيد جداً مع $_GET و $_POST.

match (PHP 8): مثل switch لكن أكثر إحكاماً ويستخدم المقارنة الصارمة (===).
PHP
<?php
$score = 85;

// Ternary: سطر واحد بدل if/else
$result = ($score >= 60) ? "ناجح ✅" : "راسب ❌";
echo "النتيجة: $result<br>";

// Null Coalescing (??)
$username = $_GET['name'] ?? "زائر";
echo "مرحباً $username<br>";

// يمكن تسلسلها
$a = null;
$b = null;
$c = "أحمد";
echo ($a ?? $b ?? $c) . "<br>"; // أحمد

// match (PHP 8+)
$lang = "ar";
$greeting = match($lang) {
    "ar" => "مرحباً",
    "en" => "Hello",
    "fr" => "Bonjour",
    default => "Hi"
};
echo $greeting;
?>
الناتج المتوقع
النتيجة: ناجح ✅ مرحباً زائر أحمد مرحباً
🧠

اختبر فهمك — الجمل الشرطية

5/5 للمتابعة
السؤال 1
ماذا يحدث إذا نسينا كتابة break في case داخل switch؟
السؤال 2
ما هو الناتج: echo (10 > 5) ? "كبير" : "صغير";
السؤال 3
ما وظيفة مشغل ?? (Null Coalescing)؟
السؤال 4
كيف نكتب الجزء الذي ينفذ عند عدم مطابقة أي case في switch؟
السؤال 5
ما الكلمة المفتاحية في PHP 8 التي تستخدم المقارنة الصارمة مثل switch؟