Intereting Posts
Работа над удаленным проектом PHP (сервер Ubuntu) через Eclipse, Netbeans или любую другую среду IDE Отображать определенное изображение в зависимости от конкретного текста в таблице MySQL с помощью PHP Значения мусора, возникающие при извлечении данных из wordpress Получение количества строк после выполнения PDO Стандартный способ переключения из / в user_timezone и gmt Как сделать левое присоединение к Доктрине? Почему не работает скрипт PHPmailer для получения / сохранения файлов? headers_sent () возвращает false, но заголовки отправлены Использование PHPass для хеш-пароля Сохранять и отображать текст точно, как он набирается и отправляется Почему PHP 5.2+ запрещает использование абстрактных методов статического класса? Удаление последней запятой в PHP? почему 0.1 + 0.2-0.3 = 5.5511151231258E-17 в php Можно ли заблокировать файлы cookie с помощью Javascript или PHP? Отменить ожидающие запросы AJAX в приложении PHP?

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

Я задавался вопросом о различии между elseif и else if .

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

Другой участник сказал:

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

и он поддержал его с контрольным тестом.

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

 else if() {...} 

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

 else { if() {...} } 

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

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

Я прав?

В дополнение к моему комментарию, из того, что я могу видеть в источнике 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 .

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

В Руководстве я зачитал (см. Примечание):

Примечание. Обратите внимание, что elseif и else if будут считаться точно одинаковыми при использовании фигурных скобок, как в приведенном выше примере. При использовании двоеточия для определения ваших условий if / elseif вы не должны отделять else, если на два слова, или 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; ?> 

«Разница в скорости» в этом комментарии не является статистически значимой. Кроме else if: не разобрать, нет никакой эффективной разницы.

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