在同一个数组上使用filter_input_array和array_filter

时间:2014-10-06 11:44:40

标签: php arrays

我的表单中有一组相同的输入字段,其中一些字段可能为空。

<input type="text" class="form-control" name="option[]" placeholder="fill in" />
<input type="text" class="form-control" name="option[]" placeholder="optional" />
<input type="text" class="form-control" name="option[]" placeholder="optional" />

这些输入字段的值进入数组$_POST["option"]

我想过滤$_POST["option"],为此我使用以下代码:

$filter = array("option" => array("filter"=>FILTER_CALLBACK,"flags"=>FILTER_FORCE_ARRAY,"options"=>"ucwords"));
$optionfin = filter_input_array(INPUT_POST, $filter);

但现在我还想使用array_filter函数删除空字段,这样我就可以只将填好的字段输入到我的数据库中,但这似乎不起作用。

$option = array_filter($optionfin);

当我执行以下操作时:

$optionfin = array_filter($_POST["option"]);

这工作正常,但我知道你最好不要以这种方式访问​​$_POST因为它不安全......

任何人都可以帮我指出我哪里出错吗?

由于

1 个答案:

答案 0 :(得分:0)

因为您使用的是filter_input_array,所以实际上您最终会得到一个与$_POST对应的关联数组。因此,要在尝试过滤掉空字段时,您需要指定option键:

$option = array_filter($optionfin['option']);