使用filter_require_array区分filter_input_array和filter_input

时间:2015-12-04 08:42:56

标签: php

我不知道。我需要使用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,我会使用它,因为我认为它更好,但我不确定。

1 个答案:

答案 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 ]] )