filter_var логическое возвращение false

Это странно

var_dump(filter_var(true, FILTER_VALIDATE_BOOLEAN));
var_dump(filter_var(false, FILTER_VALIDATE_BOOLEAN));

bool(true)
bool(false)

Что мне здесь не хватает? Конечно, они оба должны быть правдой? Если нет, то как я могу проверить ложное логическое значение?

Изменить: чтобы уточнить.
Мне нужно проверить ложное логическое значение. Чтобы убедиться, что это не строка, int, float или что-то еще.
например

$var = false; //true
$var = true; //true
$var = 'foo'; //false
$var = 1; //false

Возможно, я неправильно задал свой вопрос или слишком много развил его, и мне следует задать другой вопрос.

Решение, за которое я пошел, было:

$result = filter_var($bool, FILTER_VALIDATE_BOOLEAN) && ($bool===true||$bool===false);

0

Решение

Из руководства: —

Если задано FILTER_NULL_ON_FAILURE, FALSE возвращается только для «0», «false», «off», «no» и «», а NULL возвращается для всех не булевых значений.

Установите это, и если null возвращается, у вас нет значения bool (или boolish).

Например:-

var_dump(filter_var(true, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE));
var_dump(filter_var(false, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE));
var_dump(filter_var(2, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE));

Увидеть это работает

Тем не менее, это может быть is_bool() здесь уместнее.

1

Другие решения

Других решений пока нет …