Является ли!$ Page == false или $page в php?

Я видел следующий код, который использует if ($page!==false). Каковы различия, если я использую if ($page)?

if($id){ // check that page exists
$page=dbRow("SELECT * FROM pages WHERE id=$id");
if($page!==false){
    $page_vars=json_decode($page['vars'],true);
    $edit=true;
}

Заранее спасибо.

4 ответа

Решение

С $page !== false, это только проверяет, если $page имеет логический тип (т.е. true или же false) и если оно равно false, if ($page) проверяет, является ли логическое представление $page ложно Следующие значения являются ложными при преобразовании в логическое значение в PHP:

  • null
  • 0 (Целое число)
  • 0.0 (С плавающей точкой)
  • '' (пустой строки)
  • '0' (строка, содержащая символ 0)
  • array() (пустой массив)

Так что если $page любой из них, if ($page) потерпит неудачу, но if ($page !== false) пройдет.

Если вы используете if($page!==false), вы убедитесь, что $ page не является ложным (в этом случае, если $ page равно 0 или ноль, не будет считаться ложным, поскольку вы принудительно проверяете тип с помощью!==)

Если вы используете if ($page), это означает что-либо, кроме false, 0, NULL, пустую строку, пустой массив или любую вещь, которая вычислена как TRUE

=== а также !== сравнивает по значению и типу (строгое сравнение).

== а также != сравнивает только по значению (слабое сравнение).

В вашем случае $page!==false только оценивает true когда $page не является логическим значением false,

Смотрите также:

Есть некоторые ложные вещи, которые !== false, такие как NULL, 0, array()и пустая строка. Полный список ложных значений здесь.

!== работает, проверяя, что и тип, и значение идентичны. Так $page !== false будет истинным, если $page не является логическим значением со значением false.

По сравнению if($page) приведет к выполнению блока, если $page что-нибудь правдивое (оценка ИСТИНА). Это в основном все, кроме значений, указанных в приведенной выше ссылке.

Таким образом, поведение неверно для ложных значений, которые не совсем false,

Другие вопросы по тегам