Is! $ 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; } 

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

Solutions Collecting From Web of "Is! $ Page == false или $ page в php?"

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

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

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

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

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

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

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

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

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

  • Таблица прав в PHP

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

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

Напротив, if($page) приведет к выполнению блока, если $page – что-то правдоподобное (оценка TRUE). Это в основном все, кроме значений, перечисленных в приведенной выше ссылке.

Таким образом, поведение отличается от значений фальши, которые не являются точно false .