Основное отличие между 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
Что касается эффективности и основано на том, что я изучал в течение длительного времени. Нет никакой разницы.