所以我有一个我无法动摇的问题,我确信自己在做一些简单的错误,但是我仍然找不到错误,我有一个带有2个option元素的html select元素,select设置为多并且两个选项都已设置为选中状态,所有要做的就是单击“应用”按钮,看看结果如何。
所以我的问题是,当您运行此方案并对过滤器输入进行变量转储时,它返回false(无数据),但是当您全局转储$ _POST变量时,它具有我正在寻找的数据,任何知道我在做什么错。
代码如下:
$submit = filter_input(INPUT_POST, 'submit', FILTER_SANITIZE_SPECIAL_CHARS);
if(!isset($submit)){
?>
<form action="" method="post">
<select name="partsused[]" id="usedparts" multiple>
<option value="empty" selected>Empty</option>
<option value="full" selected>Full</option>
</select>
<br/>
<button type="submit" name="submit" value="submit">Apply</button>
</form>
<?php
} else {
$someArray = filter_input(INPUT_POST, 'partsused');
var_dump($someArray);
var_dump($_POST['partsused']);
die;
}
我从var_dump获得的输出如下:
bool(false)
array(2) { [0]=> string(5) "empty" [1]=> string(4) "full" }
因此,您可以看到filter_input根本没有从$ _POST读取值,所以我尝试了所有不同的过滤器,甚至根本没有过滤。
所以只是为了清楚起见,是的,将S_POST ['partsused']分配给变量$ someArray确实可以,但是我不喜欢这样做,我总是使用filter_input,不确定为什么这样做了,任何想法或需要。
答案 0 :(得分:0)
根据this注释,如果输入是数组,并且您正在使用filter_input
,则需要使用以下设置:
var_dump(filter_input(INPUT_POST, 'partsused', FILTER_DEFAULT , FILTER_REQUIRE_ARRAY));
并根据文档:
FILTER_REQUIRE_ARRAY
-要求该值是一个数组。
答案 1 :(得分:0)
您必须改为使用filter_input_array
$someArray = filter_input_array(INPUT_POST, 'partsused');