我不知道。我需要使用filter_input,之前我只使用filter_input
设置filter_require_array
。但是现在我看到了一个名为filter_require_array
的函数。有什么区别,有什么区别?例如,我有这个HTML:
<form action="" method="post">
<input type="text" name="test[]">
<input type="text" name="test[]">
<input type="submit" value="Submit">
</form>
这个PHP(这只是一个例子,所以这不是最好的代码):
<?php
$test = filter_input(INPUT_POST, 'test', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY);
$test2 = filter_input_array(INPUT_POST, 'test');
echo '<pre>';
echo var_dump($test);
echo '</pre>';
echo '<hr>';
echo '<pre>';
echo var_dump($test2);
echo '</pre>';
?>
代码在var_dump($test)
上给出以下结果:
array(2) {
[0]=>
string(5) "test1"
[1]=>
string(5) "test2"
}
现在,在var_dump($test2)
,它会得到以下结果:
bool(false)
为什么filter_input_array
在这种情况下会返回false?如果我可以使用filter_require_array,我会使用它,因为我认为它更好,但我不确定。
答案 0 :(得分:2)
您正在使用filter_input_array(INPUT_POST, 'test');
,
注意第二个论点!
filter_input()
的第二个参数是$variable_name
同时,filter_input_array()
的第二个参数不是variable_name,而是过滤器定义,例如filter_input_array(INPUT_POST, $filter_definition);
$filter_definition
可以是:
$filter_definition = [
'test' => ['filter' => FILTER_SANITIZE_STRING,
'flags' => FILTER_REQUIRE_ARRAY],
];
引用filter_input_array的PHP手册:
mixed filter_input_array ( int $type [, mixed $definition [, bool $add_empty = true ]] )