Иначе, если не синоним? - PullRequest
0 голосов
/ 29 апреля 2020

Я запускаю отладчик PHPStorm с php 7.1.30, и когда я запускаю этот код:

    if (condition_1){
      do something;
    }
    elseif (condition_2) {
      do something different;
    }
    elseif (condition_3) {
      do something more different;
    }
    else {
      do something if all else has failed;
    }

, если условие_1 ложно, управление немедленно переходит к случаю else, и тесты elseif не применяется.

Если я заменю elseif на else if, все будет работать как положено.

1 Ответ

1 голос
/ 29 апреля 2020

https://www.php.net/manual/en/control-structures.elseif.php

Они одинаковы, единственная причина, по которой это не сработает, будет, если вы используете двоеточия, как подробно описано в руководстве:

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

?>

Но так как вы используете фигурные скобки, должны работать либо с elseif, либо с if, если

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...