为什么当我手动将值分配给 $_POST 数组时filter_input() 返回 NULL


why does filter_input() return NULL when I manually assign value to $_POST array?

我正在做一些关于数据验证的练习,并决定弄乱filter_input()函数。当我尝试运行此代码时:

$_POST['var'] = 10;
$filtered = filter_input(INPUT_POST, 'var', FILTER_VALIDATE_FLOAT);
var_dump($filtered);

var_dump($filtered)返回 NULL。我知道如果通过提交表单为$_POST['var']赋值,代码会起作用,但我只是想知道为什么手动为 $_POST[] 数组分配值不会返回float(10)

filter_input()不会从_POST/_GET/_COOKIE/_SERVER/_ENV超全局数组中读取。它分别从这些值的原始来源读取(这些值也用于填充超全局变量)。

这是因为INPUT_POST处理原始 POST 值,在脚本中修改它们不起作用。但是,如果要过滤该变量,可以使用:

filter_var($_POST['var'], FILTER_VALIDATE_FLOAT);

如果要设置默认输入值和筛选器,请使用 filter_var 。因为filter_input不会过滤超全局变量的当前值。