Menu
flag Ar iconالعربيةdown icon

جمل if وelseif وelse في PHP مع أمثلة

تنفّذ if (condition) { ... } كتلة فقط عندما يكون الشرط صحيحًا، وتفحص elseif الشرط التالي، وتعمل else عندما لا يتحقق أي شرط. يتناول الدرس elseif مقابل else if، و&& و||، والقيم الصحيحة منطقيًا، وصيغة if: endif; لقوالب HTML.

تحتوي هذه الصفحة على محررات قابلة للتشغيل - حرّر، شغّل، وشاهد النتيجة فوراً.

تنفّذ if (condition) { ... } كتلتها فقط عندما يكون الشرط صحيحًا. أضف elseif (other condition) { ... } لحالات أخرى، وelse { ... } لكل ما تبقى. تفحص PHP الشروط من الأعلى ولا تنفّذ إلا أول كتلة يتحقق شرطها.

غيّر $temperature وشغّله مرة أخرى. ولأن الفحص يجري من الأعلى إلى الأسفل، تتوقف القيمة 24 عند الشرط الثاني ولا تصل أبدًا إلى >= 10، مع أنه صحيح أيضًا. رتّب شروطك من الأكثر تحديدًا إلى الأعم.

elseif مقابل else if

مع الأقواس المعقوصة، تفعل elseif وelse if الشيء نفسه. من الناحية التقنية، else if هي else جسمها if جديدة، لكن النتيجة مطابقة.

لا يظهر الفرق إلا مع صيغة النقطتين المستخدمة في القوالب (الأقسام التالية). هناك، تكسر else if الشيفرة:

<?php $score = 72; ?>
<?php if ($score >= 90): ?>
    <p>A</p>
<?php else if ($score >= 60): ?>
    <p>Passed</p>
<?php endif; ?>
PHP Parse error:  syntax error, unexpected token "if", expecting ":" in /home/index.php on line 4

اكتب elseif كلمة واحدة ولن تواجه هذا الخطأ أبدًا.

عدة شروط باستخدام && و||

يتطلب && (و) أن يكون الطرفان صحيحين، ويتطلب || (أو) طرفًا واحدًا على الأقل، ويعكس ! الشرط. تتوقف PHP عن التقييم بمجرد أن تُعرف النتيجة، لذا في $user !== null && $user['active'] لا يُنفَّذ الجزء الثاني إلا عند وجود مستخدم.

عندما تمزج && و||، أضف أقواسًا: && أعلى أولوية، والأقواس توضّح القصد لمن يقرأ بعدك. لدى PHP أيضًا الكلمتان and وor، لكن أولويتهما أدنى من =، لذا فإن $ok = true and false; تضبط $ok على true. التزم بـ && و||.

ما الذي يُعدّ صحيحًا في if

لا يلزم أن يكون الشرط قيمة منطقية. تحوّله PHP، وعدد قليل من القيم يُعدّ خاطئًا: false و0 و0.0 و"" و"0" و[] وnull. وكل ما عدا ذلك صحيح، بما فيه "false" و" " و"0.0".

كيف ترى if ($x) كل قيمة
Point at or tap a cell to read it as PHP.
$xboolempty
false
0
0.0
""
"0"
null
[]
" "
"0.0"
"a"
[0]
1
Every cell computed by PHP 8.3.19.

لهذا تُعدّ if ($items) طريقة شائعة لقول «المصفوفة ليست فارغة». سطر "0" هو الذي يوقعك: حقل نموذج كتب فيه أحدهم 0 نص غير فارغ، ومع ذلك تعامله if ($_POST['qty']) على أنه خاطئ. قارن صراحةً (if ($qty !== '')) عندما يكون الصفر إجابة صحيحة. والقواعد نفسها تحدد ما تعيده empty().

if else داخل HTML باستخدام if: وendif;

بين وسوم HTML، يسهل أن تضيع الأقواس المعقوصة. لدى PHP صيغة بديلة: نقطتان بعد الشرط، وelseif ...: وelse: للفروع الأخرى، وendif; في النهاية. شغّل هذه الكتلة، ثم انقر على الدرجات في تبويب Page: كل رابط يشغّل السكربت نفسه مرة أخرى مع $_GET['score'] جديدة.

<?= $score ?> اختصار لـ <?php echo $score; ?>. وصيغة النقطتين نفسها موجودة للحلقات (foreach: endforeach; وwhile: endwhile;) وهي ما تستخدمه معظم قوالب PHP.

if في سطر واحد والعامل الثلاثي

يمكن أن تأتي جملة واحدة بعد الشرط دون أقواس. هذا يعمل، لكن السطر التالي الذي تضيفه لن يكون داخل if، لذا تشترط كثير من أدلة الأسلوب الأقواس دائمًا. ولاختيار إحدى قيمتين، العامل الثلاثي أقصر من if/else كاملة.

عندما توجد قيم محددة كثيرة تقارنها بمتغير واحد، يُقرأ تعبير match أفضل من سلسلة elseif طويلة.

اخرج مبكرًا بدل التداخل

كتل if المتداخلة بعمق صعبة المتابعة. داخل دالة، افحص حالات الفشل أولًا ونفّذ return فورًا. عندها يبقى المنطق الرئيسي عند حافة السطر.

خطأ شائع: = بدل == في الشرط

علامة = المفردة تُسند قيمة. تخزّن if ($role = 'admin') القيمة 'admin' في $role ثم تختبر ذلك النص، وهو صحيح. فتُنفَّذ الكتلة لكل مستخدم، وتصبح $role خاطئة أيضًا.

استخدم === للمقارنة ما لم يكن لديك سبب لتريد تحويل الأنواع. يكتب بعضهم الثابت أولًا (if ('admin' === $role))، فيصبح نسيان = خطأً ظاهرًا بدل إسناد صامت.

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

ما الفرق بين elseif وelse if في PHP؟

مع الأقواس المعقوصة يتصرفان بالطريقة نفسها: else if هي else جسمها if أخرى. أما مع صيغة النقطتين (if (...): ... endif;) فلا تعمل إلا elseif، وتكون else if خطأ في التحليل. استخدام elseif في كل مكان يجنّبك هذا الفرق.

كيف أتحقق من عدة شروط في جملة if في PHP؟

اربطها بـ && (يجب أن تكون كلها صحيحة) أو || (واحد منها على الأقل): if ($age >= 18 && $hasTicket) { ... }. استخدم الأقواس عندما تمزج بينهما، مثل if ($isAdmin || ($isOwner && $isActive)).

كيف أكتب جملة if في سطر واحد في PHP؟

يمكن أن تأتي جملة واحدة بعد الشرط دون أقواس: if ($debug) echo 'debug mode';. وللاختيار بين قيمتين في سطر واحد، استخدم العامل الثلاثي: $label = $count === 1 ? 'item' : 'items';.

كيف أستخدم if else داخل HTML في PHP؟

استخدم الصيغة البديلة، فهي سهلة القراءة بين وسوم HTML: <?php if ($loggedIn): ?> <p>Welcome back</p> <?php else: ?> <a href="/login">Log in</a> <?php endif; ?>.

رسم توضيحي للغات البرمجة في Coddy

تعلّم البرمجة مع Coddy

ابدأ الآن