Что делает if (); do, где точка с запятой находится сразу после скобок?

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

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

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

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

2 ответов


один ; можно читать как "пустой оператор" и

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

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

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

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


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

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


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

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

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

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