Основное отличие между elseif vs else if

Мне было интересно узнать разницу между elseif и else if.

Я читал руководство, в котором говорится, что если использовать фигурные скобки {}, то они обрабатываются одинаково, но только elseif работает, когда не используется скобки.

Также другой участник сказал:

Обратите внимание, что} elseif() {несколько быстрее, чем} else, если() {

и он поддержал это с помощью тестового теста.

Мне кажется, что elseif - это истинный способ сказать это и сказать:

else if() {...}

действительно эквивалентен:

else { if() {...} }

который мог бы объяснить, почему его минимально медленнее.

Я использую else if, потому что это то, как я это делаю и на других языках. Я действительно не думаю, что это важно, как вы его вводите (если вы не используете фигурные скобки.. но я думаю, что всегда полезно использовать фигурные скобки в любом случае). Мне было просто интересно узнать о деталях.

Правильно ли я?

Ответы

Ответ 1

В дополнение к моему комментарию, из того, что я могу видеть в источнике PHP, единственное ускорение скорости заключается в том, что у парсера PHP есть специальный токен для elseif, который неудивительно известен как T_ELSEIF. Но я уверен, что повышение скорости - не что иное, как побочный эффект, позволяющий elseif в альтернативном синтаксисе:

if (cond1):
    // Do something
elseif (cond2):
    // Do something else
else:
    // Do something else
endif;

Подобно Python, который использует elif, else if с пространством, не будет разрешен без необходимости излишне усложнять код реализации парсера (т.е. действовать по-разному между просмотром двоеточия и ключевым словом if). Таким образом, двоеточие требуется непосредственно после else и if соответственно, а также то, как указано условие языка.

Ergo. Я уверен, что PHP просто рассматривает else if как условный блок в выражении-единственном else.

Если есть какие-либо различия во времени, обвините парсер в большинстве из них.

Ответ 2

В Manual Я прочитал (см. примечание):

Примечание. Обратите внимание, что elseif и else if будут считаться в точности при использовании фигурных скобок, как в приведенном выше примере. При использовании двоеточие, чтобы определить ваши условия if/elseif, вы не должны отдельно отделять если на два слова или PHP с ошибкой синтаксического анализа.

Пример:

<?php

/* Incorrect Method: */
if($a > $b):
    echo $a." is greater than ".$b;
else if($a == $b): // Will not compile.
    echo "The above line causes a parse error.";
endif;


/* Correct Method: */
if($a > $b):
    echo $a." is greater than ".$b;
elseif($a == $b): // Note the combination of the words.
    echo $a." equals ".$b;
else:
    echo $a." is neither greater than or equal to ".$b;
endif;

?>

Ответ 3

"Разница в скорости" в этом комментарии не является статистически значимой. Помимо else if: не анализируя, нет эффективной разницы.

Ответ 4

Что касается эффективности и основано на том, что я изучал в течение длительного времени. Нет никакой разницы.