FILTER_VALIDATE_BOOLEAN的默认选项


FILTER_VALIDATE_BOOLEAN's default option

我希望我的查询参数为真,除非另有明确设置。

$a = filter_input(INPUT_GET, 'v', FILTER_VALIDATE_BOOLEAN,
    array('options' => array('default' => true)));
var_dump($a);

但是,像/test.php?v=false 这样的访问此脚本会打印bool(true) 。此外,它总是在任何输入上打印bool(true)

  • 这是预期行为吗?
  • 如果是这样,我怎样才能以简洁的方式实现我的目的?

您需要将FILTER_NULL_ON_FAILURE作为选项标志传递,以便您的代码而不是:

$a = filter_input(INPUT_GET, 'v', FILTER_VALIDATE_BOOLEAN, array('options' => array('default' => true)));

它应该是:

$a = filter_input(INPUT_GET, 'v', FILTER_VALIDATE_BOOLEAN, array('options' => array('default' => true), 'flags' => FILTER_NULL_ON_FAILURE));