1

这很奇怪

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);
4

1 回答 1

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));

看到它工作

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

于 2014-11-13T11:22:47.623 回答