Что делает, если (); делать, где точка с запятой находится сразу после скобок? - PullRequest
6 голосов
/ 03 июня 2011

Бывает, что при написании PHP-кода я случайно ставлю точку с запятой ; сразу после оператора if.Например:

if($a > 1);
{
   ....
}

Я думал, что PHP должен выдавать ошибку в этом случае, но это не так.Такой синтаксис должен иметь значение, мне просто интересно, что это такое.

Для того, что я мог видеть, условие кажется всегда верным, когда добавляется ;, но я не уверенвсе это и есть смысл.

Ответы [ 2 ]

14 голосов
/ 03 июня 2011

Одиночный ; может быть прочитан как «пустое утверждение», а

if($a > 1);
{
   ....
}

эквивалентно

if($a > 1)
    ;        // execute an empty statement if $a > 1

// then execute the following block of code.
{
   ....
}

Для того, что я мог видеть, условие, кажется, всегда верно, когда добавлено ;

ЭтоЭто только кажется, поскольку блок выполняется независимо от оператора if.

1 голос
/ 03 июня 2011

Добавление точки с запятой по существу завершает блок if перед фигурными скобками. Это неправда, просто вы ничего не делаете в if.

Подумайте об этом, если у вас нет брекетов:

if($a>1)
  echo "Yes";
echo "No";

делает все до первой точки с запятой внутри if. Так что в вашем случае перед первой точкой с запятой ничего нет, поэтому ничего не происходит.

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