Php 自定义函数,仅允许提交中的预期数据

Php 自定义函数,仅允许提交中的预期数据,php,forms,function,loops,post,Php,Forms,Function,Loops,Post,我有一个函数,只允许表单提交的预期数据。我以前用过它,效果很好,但现在我试着用它。它抛出一个错误:警告:为foreach()提供的参数无效。我已尝试使用is\u array()函数,但没有修复错误。你知道为什么会这样吗 功能 function allowed_post_params($allowed_params=[]) { $allowed_array = []; foreach ($allowed_params as $param) { if (isset

我有一个函数,只允许表单提交的预期数据。我以前用过它,效果很好,但现在我试着用它。它抛出一个错误:
警告:为foreach()提供的参数无效。
我已尝试使用
is\u array()
函数,但没有修复错误。你知道为什么会这样吗

功能

  function allowed_post_params($allowed_params=[]) {
    $allowed_array = [];
    foreach ($allowed_params as $param) {
        if (isset($_POST[$param])) {
            $allowed_array[$param] = $_POST[$param];
        } else {
            $allowed_array[$param] = NULL;
        }
    }
    return $allowed_array;
  }
在处理中使用

if (is_post_request()) {

  $post_params = allowed_post_params('email', 'username', 'password', 'country');
  $email = $post_params['email']  ?? '';
  $username = $post_params['username'] ?? '';
  $password = $post_params['password'] ?? '';
  $country = $post_params['country'] ?? '';

}

您正在为函数提供4个
string
参数

$post_params = allowed_post_params('email', 'username', 'password', 'country');
它应该是单个
数组

$post_params = allowed_post_params(['email', 'username', 'password', 'country']);

是的,现在我注意到了。我不知道我怎么会错过。非常感谢。