انتقل إلى محتوى الدرس
الدرس 21
دورة PHP

الجمل الشرطية if و elseif و else في PHPPHP If Else and Conditional Statements

تعلّم الجمل الشرطية if و elseif و else في PHP بأسلوب PHP 8 الحديث مع أمثلة عملية وتطبيقات تفاعلية.
أقسام الدرس
6
الأمثلة
6
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
4
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع

تقوم جملة if بتقييم تعبير منطقي داخل قوسين، وتنفذ كتلة الكود التابعة لها فقط عندما تكون نتيجة التقييم true.

  • فضّل دائماً المقارنة الصارمة (=== و!== و>=) داخل شروط if لتفادي التحويل التلقائي المربك للأنواع.
  • أحِط جسم جملة if دائماً بأقواس معقوفة { ... } حتى لو كان سطراً واحداً لمنع أخطاء الصيانة مستقبلاً.
  • تدمج الشروط المركبة عدة فحوصات باستخدام المعاملات المنطقية (&& للربط و|| للتخيير) مع التقييم المختصر.

لأن كلاً من $orderTotal >= 200.00 و$isVerified === true يرجع true، ينفذ PHP الكتلة داخل if ثم يكمل السطر التالي.

مخطط توضيحي: محاكي فروع الجمل الشرطية التفاعلي (if / elseif / else)
PHP
<?php

$orderTotal = 280.00;
$isVerified = true;

if ($orderTotal >= 200.00 && $isVerified === true) {
    echo "Free express shipping unlocked!\n";
}

echo "Checkout step completed.\n";

تُلحق كتلة else مساراً بديلاً مضمون التنفيذ يعمل تلقائياً عندما تكون نتيجة شرط if السابق هي false.

  • يتم تنفيذ فرع واحد فقط بالضبط في ثنائية if / else في كل مرة تشغيل؛ لا يُنفذ الاثنان معاً ولا يُترك كلاهما.
  • لا تقبل كلمة else شرطاً بين قوسين؛ بل تلتقط جميع الحالات المتبقية التي لم تحقق الشرط.
  • في حالات إسناد قيمة بسيطة بدون عمليات جانبية، قارن بين استخدام if / else والمعامل الثلاثي ? :.

بما أن الشرط $stockCount > 0 نتيجته false عندما تكون القيمة 0، ينتقل التنفيذ مباشرة إلى كتلة else.

PHP
<?php

$stockCount = 0;

if ($stockCount > 0) {
    $badge = "In Stock ($stockCount available)";
} else {
    $badge = "Out of Stock - Backorder Only";
}

echo $badge . "\n";

عندما يتضمن منطق القرار ثلاث شرائح أو أكثر، اربط الشروط بالتسلسل من الأكثر تخصيصاً إلى الأعم باستخدام elseif.

  • يُقيّم PHP شروط if وelseif من الأعلى للأسفل ويتوقف عند أول فرع ترجع نتيجته true.
  • رتّب فحوصات النطاقات من الأعلى إلى الأدنى (مثل >= 90 قبل >= 75) حتى لا يحجب الشرط الأعم الشروط الأخص.
  • التزم بمعيار PSR-12 بكتابة الكلمة الموحدة elseif بدون مسافة بدلاً من else if.

يختبر PHP الشرط $score >= 90 (خطأ)، ثم يختبر $score >= 80 (صحيح)، فيُسند "B (Merit)" ويتخطى باقي الفروع.

PHP
<?php
$score = 84;
if ($score >= 90) {
    $grade = "A (Distinction)";
} elseif ($score >= 80) {
    $grade = "B (Merit)";
} elseif ($score >= 60) {
    $grade = "C (Pass)";
} else {
    $grade = "F (Retry)";
}
echo "Score $score -> $grade\n";

إن تداخل جمل if / else لعدة مستويات ("كود السهم") يصعّب القراءة؛ بينما فحص الشروط المسبقة في البداية يبقي المسار الرئيسي مسطحاً وواضحاً.

  • افحص الحالات غير الصالحة أو المرفوضة أولاً وعالجها مباشرة بدلاً من حصر مسار العمل الصحيح داخل كتل متداخلة عميقة.
  • تجعل الفحوصات المسطحة سبب كل رفض واضحاً ومستقلاً وسهل التتبع عند تصحيح الأخطاء.
  • تجنب تداخل الجمل الشرطية لأكثر من مستويين في الأكواد الإنتاجية.

تم عزل كل حالة فشل في المستوى الأول عبر if وelseif، مما أبقى مسار النجاح واضحاً ومباشراً في الفرع الأخير.

مخطط تدفق التنفيذ العملي لقسم حراس الشروط وتجنب التداخل في لغة PHP
PHP
<?php
$isActive = true;
$balance = 150.00;
$price = 120.00;
if (!$isActive) {
    echo "Error: Account is suspended.\n";
} elseif ($balance < $price) {
    echo "Error: Insufficient balance.\n";
} else {
    $remaining = $balance - $price;
    echo "Payment approved! Remaining: $remaining\n";
}

عند تضمين الشروط داخل قوالب HTML، توفر الصيغة البديلة (if (...): ... endif;) وسوم إغلاق واضحة ومقروءة.

  • استبدل قوس الفتح المعقوف { بنقطتين رأسيتين :، واستبدل قوس الإغلاق } بالكلمة endif;.
  • استخدم دائماً الكلمة الموحدة elseif (...):؛ لأن كتابة else if (...): مع النقطتين تسبب خطأ نحوياً فادحاً (Parse Error).
  • قصر استخدام صيغة النقطتين على ملفات قوالب العرض HTML فقط، واستخدم الأقواس المعقوفة القياسية { } في ملفات PHP البرمجية.

تفتح النقطتان الرأسيتان : كل فرع شرطي، وتغلق endif; البنية الشرطية بالكامل بشكل صريح.

PHP
<?php

$role = "editor";

if ($role === "admin"):
    $panel = "Full System Console";
elseif ($role === "editor"):
    $panel = "Content Publishing Desk";
else:
    $panel = "Reader Dashboard";
endif;

echo "Active View: $panel\n";

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

  • استخدم if / elseif / else القياسية عندما تختبر الشروط نطاقات رقمية (> أو <=) أو تعبيرات مركبة.
  • استخدم المعامل الثلاثي ? : أو معامل دمج الفارغ ?? لإسناد القيم الافتراضية المختصرة في سطر واحد.
  • احذر دائماً من كتابة علامة مساواة واحدة عن طريق الخطأ (if ($a = 5)) داخل قوسي الشرط.

يجمع السكريبت بين فحص النطاق عبر if / else ومعامل ?? لاختيار عنوان بديل عندما يكون $customLabel مساوياً لـ null.

البنية الشرطيةأفضل حالة استخدامدعم النطاقات (> / <)إرجاع قيمة مباشرة
if / elseif / elseفحص النطاقات المركبة والشروط المتعددةنعملا (جملة برمجية)
if : ... endif;قوالب العرض المدمجة مع HTMLنعملا (جملة برمجية)
$cond ? $a : $bإسناد قيمة ثنائية مختصرة في سطر واحدنعمنعم (تعبير يُرجع قيمة)
$val ?? $defaultتوفير قيمة بديلة آمنة عند وجود nullيفحص null فقطنعم (تعبير يُرجع قيمة)
PHP
<?php

$latencyMs = 42;
$customLabel = null;

if ($latencyMs < 100) {
    $health = "Healthy";
} else {
    $health = "Degraded";
}

$title = $customLabel ?? "Server Status: $health";
echo "$title ($latencyMs ms)\n";
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

اختر الصيغة الشرطية الأنسب بناءً على عدد الفروع وما إذا كنت تنفذ أوامر متعددة أو تسند قيمة واحدة. استخدم if / elseif / else القياسية عندما تختبر الشروط نطاقات رقمية (> أو <=) أو تعبيرات مركبة. استخدم المعامل الثلاثي ? : أو معامل دمج الفارغ ?? لإسناد القيم الافتراضية المختصرة في سطر واحد. احذر دائماً من كتابة علامة مساواة واحدة عن طريق الخطأ (if ($a = 5)) داخل قوسي الشرط.

مشاركة

هل كان هذا الدرس مفيدًا؟

جارٍ تحميل الآراء…

ابنِ لغتك البرمجية

المصطلحات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 If & Else الجمل الشرطية
تعلّم الجمل الشرطية if و elseif و else في PHP بأسلوب PHP 8 الحديث مع أمثلة عملية وتطبيقات تفاعلية.
للمراجعة
02 Conditional Execution with if التنفيذ الشرطي بجملة if
المفهوم الأساسي لقسم التنفيذ الشرطي بجملة if في لغة PHP الحديثة.
للمراجعة
03 Fallback Branch with else مسار التنفيذ البديل بـ else
الصياغة البرمجية والتطبيق العملي المباشر لقسم مسار التنفيذ البديل بـ else.
للمراجعة
04 Chaining Conditions with elseif تعدد الشروط المتسلسلة بـ elseif
قواعد التحقق وأفضل الممارسات القياسية الخاصة بقسم تعدد الشروط المتسلسلة بـ elseif.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

حروف قليلة. معنى كامل.

الاختصارات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 PHP PHP
PHP: Hypertext Preprocessor
لغة البرمجة النصية على جانب الخادم لبناء تطبيقات الويب الديناميكية وواجهات البرمجة.
للمراجعة
02 CLI CLI
Command-Line Interface
واجهة سطر الأوامر التي تتيح تشغيل ملفات PHP مباشرة عبر الطرفية.
للمراجعة
03 FPM FPM
FastCGI Process Manager
مدير عمليات FastCGI عالي الأداء لمعالجة طلبات خادم الويب في PHP.
للمراجعة
04 HTML HTML
HyperText Markup Language
لغة الترميز القياسية التي يولدها محرك PHP ويرسلها إلى متصفح العميل بعد التنفيذ.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/2مهام منجزة
  1. أنشئ ملف PHP محلياً ونفّذ المثال البرمجي المشروح في قسم التنفيذ الشرطي بجملة if للتحقق من المخرجات.

  2. بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم مسار التنفيذ البديل بـ else وقارن مخرجات التنفيذ.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

8أسئلة 1أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي8 أسئلة تنتظرك
01

أي معامل يجب استخدامه داخل شرط if للتحقق من أن $role يساوي "admin" في القيمة والنوع معاً؟

يقارن === القيمة ونوع البيانات معاً دون تحويل تلقائي.

02

كم فرعاً يتم تنفيذه في سلسلة if / elseif / else الواحدة خلال المرة الواحدة؟

يتوقف PHP عن فحص باقي فروع elseif فور تنفيذ أول فرع يتحقق شرطه.

03

لماذا يلزم معيار PSR-12 كتابة elseif ككلمة واحدة بدلاً من else if ككلمتين؟

يدعم PHP الكلمة الموحدة elseif فقط عند استخدام صيغة النقطتين.

04

ماذا يحدث إذا كتبت الشرط if ($score >= 60) قبل elseif ($score >= 90) عندما تكون قيمة $score هي 95؟

لأن 95 >= 60 صحيح، يفوز الفرع الأول ويحجب الشرط الأخص.

05

ما الكلمة المفتاحية التي تغلق الجملة الشرطية البديلة التي تبدأ بـ if ($isReady): ؟

تغلق endif; كتلة if (...): البديلة.

06

ما الخطأ البرمجي في كتابة: if ($status = "active") { ... } ؟

علامة = الواحدة تقوم بالإسناد وتُرجع النص غير الفارغ فيُعتبر true دائماً.

07

في التعبير الشرطي if ($a && $b)، متى يقوم PHP بتقييم الطرف الثاني $b؟

إذا كان $a خاطئاً فالتعبير كله خاطئ حتماً ولذلك يتم تخطي $b.

08

ما الميزة الأساسية لاستخدام حراس الشروط (Guard Clauses) بدلاً من تداخل جمل if العميق؟

فحص الشروط المسبقة أولاً يلغي التداخل الهرمي المربك.