Почему filter_var() не принимает 0 как логическое значение?

#php #filter-var

#php #filter-var

Вопрос:

мне пришлось проверить переменную, которая должна иметь логическое значение либо 1, либо 0. я попытался использовать filter_var (), проблема с функцией в том, что если она получает 0 в качестве входных данных, она возвращает false, разве 0 не считается логическим значением? если да, то почему функция возвращает false?

следующее условие возвращается true

 filter_var(1, FILTER_VALIDATE_BOOLEAN);
  

тогда как, если я использую 0 в качестве входных данных, он вернет false

 filter_var(0, FILTER_VALIDATE_BOOLEAN);
  

Ответ №1:

Согласно http://www.php.net/manual/en/filter.filters.validate.php:

FILTER_VALIDATE_BOOLEAN

Возвращает TRUE для "1" , "true" , "on" и "yes" . Возвращает FALSE в противном случае.

Если вы хотите различать между FALSE значением и FALSE указанием сбоя, тогда вам нужно использовать FILTER_NULL_ON_FAILURE флаг.

Ответ №2:

Потому что ноль имеет логическое значение false?

Комментарии:

1. Похоже, вы действительно не понимаете, что такое логическое значение, или вы не читали руководство, объясняющее функцию. Я предлагаю перейти к php.net/manual/en/filter.filters.validate.php и чтение того, что на самом деле предлагает функция.