elseif في PHP
(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;
?>