Почему filter_var () не принимает 0 как логическое значение? - PullRequest
1 голос
/ 01 мая 2011

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

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

filter_var(1, FILTER_VALIDATE_BOOLEAN);

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

filter_var(0, FILTER_VALIDATE_BOOLEAN);

Ответы [ 2 ]

4 голосов
/ 01 мая 2011

Согласно 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.

0 голосов
/ 01 мая 2011

Поскольку ноль - это логическое ложное значение?

...