PHP:使用filter_input读取$ _POST-array返回空数组

Php: Reading $_POST-array with filter_input returns empty array

我试图将表单数据作为数组(" newData")提交给结构中的php应用程序

1
2
3
4
$_POST['newData'] = array(
    1 => array( p1 => 'a', p2 => 'ae', /*etc.*/ ),
    2 => array( p1 =>  /*etc.*/ )
)

告诉我print_r()-命令。

因为我通常通过filter_input()调用表单数据,所以我将其写入了程序:

1
2
$newData = filter_input(INPUT_POST, 'newData',
    FILTER_DEFAULT, FILTER_REQUIRE_ARRAY);

但这不包含任何值。
我是否以粗俗的方式使用filter命令,或者我不知道的php.ini中是否有一些开关? 我以相同的方式过滤输入数组的其他程序在另一台服务器上运行,这就是为什么我认为这可能是一个问题。


filter_input看不到您添加到$_POST超全局变量的数据的原因是,filter_input似乎是在检查原始数据,而不是在$_POST中的已解析数据。 $_GET也是如此

1
2
3
4
5
print( filter_input(INPUT_GET, 'foo') ); // Prints"bar"

$_GET['foo'] = 'foo'; // Sets the $_GET superglobal, but does not change the raw request data

print( filter_input(INPUT_GET, 'foo') ); // Still returns bar

我知道您可能已经解决了这个问题,但是花了我很多时间才弄清楚,而且我想帮助其他人摆脱困境。