🚀 احتراف الجمل الشرطية المتداخلة Nested if في PHP
بعد أن تعلمت كيف تستخدم جملة if البسيطة وجملة if...else لاتخاذ قرارات في كودك، حان الوقت لننتقل إلى مستوى أكثر دقة.
أحياناً، لا يكون شرط واحد كافياً لاتخاذ قرار، بل نحتاج إلى التحقق من شرط ثانٍ فقط إذا تحقق الشرط الأول. هنا يأتي دور ما نسميه بـ Nested if أو "الجمل الشرطية المتداخلة".
🧐 ما هي الـ Nested if؟
ببساطة شديدة، الـ Nested if هي عبارة عن جملة if موجودة بداخل جملة if أخرى.
تخيلها كأنها "بوابة"؛ لكي تصل إلى البوابة الثانية، يجب عليك أولاً أن تنجح في عبور البوابة الأولى. إذا لم يتحقق الشرط الأول، فإن البرنامج سيتجاهل كل الشروط الموجودة بداخله تماماً ولن ينظر إليها.
المخطط المنطقي للعملية:
- هل الشرط الأول صحيح؟
- لا ❌ اخرج من العملية وانتقل للكود التالي.
- نعم ✅ ادخل إلى الداخل وافحص الشرط الثاني.
- هل الشرط الثاني صحيح؟
- نعم ✅ نفذ الكود المطلوب.
- لا ❌ نفذ كود الـ
elseالمرتبط بالشرط الثاني (إن وجد).
- هل الشرط الثاني صحيح؟
🛠️ كيف نكتب الـ Nested if برمجياً؟
القاعدة الأساسية هي وضع جملة if كاملة (بشروطها وأقواسها) داخل القوسين { } الخاصين بجملة if خارجية.
لنلقِ نظرة على هذا المثال البسيط جداً: تخيل أننا نريد التحقق مما إذا كان الشخص "بالغاً" (عمره 18 أو أكثر)، وإذا كان بالغاً، نريد أن نعرف هل لديه "رخصة قيادة" أم لا.
<?php
$age = 20; // عمر الشخص
$hasLicense = true; // هل يملك رخصة؟
if ($age >= 18) {
// هذا هو الشرط الخارجي (البوابة الأولى)
echo "You are an adult. "; // سيتم تنفيذ هذا إذا كان العمر 18 أو أكثر
if ($hasLicense == true) {
// هذا هو الشرط المتداخل (البوابة الثانية)
echo "You are allowed to drive!"; // لن يصل الكود هنا إلا إذا تحقق الشرط الأول والثاني معاً
} else {
echo "You are an adult, but you cannot drive without a license.";
}
} else {
echo "You are too young to drive.";
}
?>
شرح الكود خطوة بخطوة:
- بدأنا بتعريف متغيرين:
$age(العمر) و$hasLicense(الرخصة). - الشرط الأول:
if ($age >= 18)هل العمر أكبر من أو يساوي 18؟ الإجابة نعم، لذا دخلنا إلى داخل القوسين. - بمجرد الدخول، وجد البرنامج شرطاً ثانياً:
if ($hasLicense == true)هل يملك رخصة؟ الإجابة نعم، لذا قام بطباعة "You are allowed to drive!". - لو كان العمر في المثال
15مثلاً، لذهب البرنامج مباشرة إلى الـelseالخارجية وطبع "You are too young to drive" دون أن يلقي نظرة على موضوع الرخصة نهائياً.
⚠️ ملاحظات هامة جداً للمبتدئين
لكي يكون كودك احترافياً ومنظماً، اتبع هذه النصائح:
- تنسيق المسافات (Indentation): لاحظ في المثال السابق كيف أن الكود الداخلي مُزاح جهة اليمين قليلاً. هذا ليس مجرد شكل، بل هو ضروري جداً لتعرف أي
ifتتبع أيelseولكي لا تضيع في الكود. 📏 - الأقواس: تأكد دائماً من إغلاق كل قوس تفتحه
{. كلifتفتحها يجب أن يكون لها قوس إغلاق}خاص بها. - البساطة: لا تضع الكثير من الشروط المتداخلة (مثلاً 5 أو 6 شروط داخل بعضها)، لأن ذلك يجعل الكود صعب القراءة ومؤلماً للعين. 😵💫
📝 مثال تطبيقي آخر (نظام تسجيل دخول مبسط)
لنفرض أننا نريد التحقق من اسم المستخدم وكلمة المرور.
<?php
$username = "admin";
$password = "12345";
if ($username == "admin") {
// إذا كان اسم المستخدم صحيحاً، ننتقل للتحقق من كلمة المرور
if ($password == "12345") {
echo "Login successful! Welcome to the dashboard."; // تحقق الشرطان
} else {
echo "Incorrect password. Please try again."; // اسم المستخدم صح لكن كلمة المرور خطأ
}
} else {
echo "User not found."; // اسم المستخدم خطأ من الأساس
}
?>
في هذا المثال:
- إذا كان
$usernameخطأ يتم تنفيذ الـelseالأخيرة فوراً. - إذا كان
$usernameصح يدخل البرنامج لفحص$password.
🏁 ملخص الدرس
- الـ Nested if هي وضع شرط داخل شرط.
- لا يتم فحص الشرط الداخلي إلا إذا كان الشرط الخارجي صحيحاً (True).
- التنسيق الصحيح للكود يسهل عليك اكتشاف الأخطاء وفهم تدفق البيانات.
🎓 اختبر معلوماتك
التعليقات
شاركنا رأيك أو أسئلتك حول هذا المقال