filter_var boolean返回false

时间:2014-11-13 11:18:15

标签: php boolean filter-var

这很奇怪

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

bool(true)
bool(false)

我在这里错过了什么?他们当然应该是真的吗?如果不是,我如何验证假布尔值?

编辑:澄清。 我需要验证一个假布尔值。确保它不是字符串,int,float或其他任何东西。 e.g。

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

也许我错误地提出了我的问题,或者我已经进化了太多广告,我应该问另一个问题。

我去的解决方案是:

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

1 个答案:

答案 0 :(得分:1)

从手册: -

  

如果设置了FILTER_NULL_ON_FAILURE,则仅为“0”,“false”,“off”,“no”和“”返回FALSE,并为所有非布尔值返回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));

See it working

但是,is_bool()可能更合适。