Чи є "elseif" та "else if" повністю синонімами?


170

Є elseifі else ifповністю синонімічними, чи є різниця?

Чи має Zend прийнятий "стандарт", яким користуватися?

Хоча мені особисто не подобається бачити elseifв коді, мені просто потрібно знати, чи вони є синонімами, а керівництво PHP - не найпростіший пошук.


10
До else ifречі, не будь-яка інша мова використовується . Наприклад, VB також використовує ElseIfі Ruby elsif.
Даніель Вандерслуйс

6
а shell / bash використовує elif
knittl

7
python також використовує elif
gregghz

Відповіді:


218

З посібника PHP :

У PHP ви також можете написати "else if" (двома словами), і поведінка буде ідентичною поведінці "elseif" (одним словом). Синтаксичне значення дещо інше (якщо ви знайомі з C, це однакова поведінка), але суть полягає в тому, що обидва призводять до абсолютно однакової поведінки.

По суті, вони будуть поводитись так само, але else ifтехнічно еквівалентні вкладеній структурі на зразок:

if (first_condition)
{

}
else
{
  if (second_condition)
  {

  }
}

Посібник також зазначає:

Зауважте, що elseif і else if будуть вважатися абсолютно такими ж, коли використовуєте фігурні дужки, як у наведеному вище прикладі. Використовуючи двокрапку для визначення умов if / elseif, ви не повинні розділяти інше, якщо на два слова, інакше PHP не вдасться з помилкою розбору.

Що означає, що у звичайній формі керуючої структури (тобто за допомогою дужок):

if (first_condition)
{

}
elseif (second_condition)
{

}

або , elseifабо else ifможуть бути використані. Однак якщо ви використовуєте альтернативний синтаксис , ви повинні використовувати elseif:

if (first_condition):
  // ...
elseif (second_condition):
  // ...
endif;

18
Гарна робота з прикладними фрагментами. Якщо що-небудь, альтернативний синтаксис - це все, що потрібно, щоб довести, що PHP просто розглядає else ifяк else { if {.
BoltClock

2
PHP не трактує else ifтак else { if {, як інакше ви б не змогли це зробити if (0) { } else if (0) { } else { }...
Guido Hendriks

4
@GuidoHendriks: справа не в тому, що до одного трактується як до іншого, це те, що вони функціонально рівнозначні. Ваш приклад еквівалентний вкладеній формі if (0) { } else { if (0) { } else { } }. Зауважте, в останньому elseблоці немає двозначності , що завжди стосується повних гілок (у кожного ifє else).
вихід

Ось ще один приклад посилання на php.net/manual/en/control-structures.elseif.php#115851
WhyAyala

З альтернативним синяксом ви просто повинні пам’ятати «двокрапка» та закінчення внутрішнього, якщо: if ($v1='1'): do_thing(); else: if($v1='b' ): do_another_thing(); else: do_smthing_else(); endif; endif; еквівалент; if ($v1='1'): do_thing(); elseif($v1='b' ): do_another_thing(); else: do_smthing_else(); endif;
DDS

47

Рамкова група взаємодії (FIG), що складається з членів, до складу яких входять розробники Zend ( https://github.com/php-fig/fig-standards#voting-members ), зібрала низку стандартних рекомендацій (PSR) - #).

Zend2 та Symfony2 вже слід PSR-0.

Немає жорстких і швидких правил для стилів, але ви можете спробувати дотримуватися стільки PSR-2, скільки зможете.

Є коментар до іншого, якщо проти elseif в PSR-2:

Ключове слово elseif БУДЕ використовуватись замість іншого, якщо так, щоб усі ключові слова контролю були схожими на окремі слова.

https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md#51-if-elseif-else

Деякі з рекомендацій - саме це, рекомендації. Ви вирішуєте, чи використовувати інше, якщо або elseif


4
Дякую вам за вказівку щодо ключових слів як однієї слова.
Теодор Р. Сміт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.