الفرق بين المراجعتين لصفحة: «PHP/elseif»

من موسوعة حسوب
< PHP
ط استبدال النص - 'PHP/Control Structures/if' ب'PHP/if'
ط نقل عبد اللطيف ايمش صفحة PHP/Control Structures/elseif إلى PHP/elseif: إعادة هيكلة التوثيق
 
(لا فرق)

المراجعة الحالية بتاريخ 03:49، 4 أبريل 2018

(PHP 4, PHP 5, PHP 7)

كما هو واضح من الاسم فإنّ هذه العبارة هي مزيج من if و else، وكما هو الحال مع else يمكن توسيع عبارة if لتنفيذ عبارة أخرى في حال كانت نتيجة تعبير if هي FALSE. ولكن، على العكس من else، فإن elseif تنفذ ذلك التعبير البديل في حالة واحدة فقط وهي أن تكون نتيجة التعبير الشرطي المتعلق بعبارة elseif هي TRUE. فعلى سبيل المثال تعرض الشيفرة التالية عبارة 'a is bigger than b'، أو 'a equal to b' أو 'a is smaller than b':

<?php
if ($a > $b) {
    echo "a is bigger than b";
} elseif ($a == $b) {
    echo "a is equal to b";
} else {
    echo "a is smaller than b";
}
?>

يمكن استخدام عبارة elseif مع الشرط ذاته لأكثر من مرة، وسينفّذ أول تعبير elseif تكون نتيجته هي TRUE (في حال وجوده). في PHP يمكن أيضًا كتابة 'else if' (أي فصل الكلمتين) وهذه العبارة مطابقة تمامًا لعبارة 'elseif' (دون فاصلٍ بينهما). يختلف المعنى النحوي لهاتين العبارتين عن بعضهما البعض (إن كانت لديك خبرة في لغة C فالحال مشابه هنا) ولكن المهمّ هو أنّ كلا التعبيرين يؤدّيان العمل ذاته.

لا تنفّذ عبارة elseif إلا إذا كانت نتيجة عبارة if السابقة وأي عبارة elseif سابقة هي FALSE ونتيجة عبارة elseif الحالية هي TRUE.

ملاحظة: يجب الانتباه إلى أن عبارتي elseif و else if تكونان متطابقتين فقط عند استخدام الأقواس المعقوفة كما في المثال السابق. عند استخدام النقطتين (: أي الشكل البديل) لتعريف شروط if/elseif يجب حينئذٍ عدم فصل الكلمتين وإلا ستواجه خطأً إعرابيًا parse error.

<?php

/* الطريقة الخطأ */
if ($a > $b):
    echo $a." is greater than ".$b;
else if ($a == $b): 
// لن تنفذ الشيفرة
    echo "The above line causes a parse error.";
endif;


/* الطريقة الصحيحة */
if ($a > $b):
    echo $a." is greater than ".$b;
elseif ($a == $b):
 // لاحظ أن الكلمتين ممزوجتان
    echo $a." equals ".$b;
else:
    echo $a." is neither greater than or equal to ".$b;
endif;

?>

مصادر