Является ли!$ 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
,