我希望我的查询参数为真,除非另有明确设置。
$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));