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


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

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

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

它告诉我print_r()-命令。

因为我通常通过filter_put()调用表单数据,所以我在程序中写道:

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

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

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

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

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