php - 检查是否设置了多个 POST 参数的最简单方法?

标签 php for-loop post isset

您好,我想知道检查是否设置了多个 POST 参数的最简单方法。我不想用“&&”链接在一起的多个“isset($_POST['example'])”进行长时间的 if 检查,而是想知道是否有更简洁的方法来执行此操作。

我最终做的是创建一个数组并循环它:

  $params_needed = ["song_name", "artist_name", "song_release_date",
                "song_genre", "song_medium"];

然后我将调用下面的函数,传入 $params_needed 来检查上面的参数名称是否已设置:

  function all_params_valid($params_needed) {
     foreach ($params_needed as $param) {
        if (!isset($_POST[$param])) {
           error("Missing the " . $param . " variable in POST request.");
           return false;
        }
     }
     return true;
  }


  if (all_params_valid($params_needed)) {
     $song_name = $_POST["song_name"];
     $artist_name = $_POST["artist_name"];
     $song_release_date = $_POST["song_release_date"];
     $song_genre = $_POST["song_genre"];
     $song_medium = $_POST["song_medium"];

     ...
  }

但是,当我这样做时,它会卡在第一个索引上并显示“缺少 Song_name 变量...”,尽管实际上将其包含在 POST 请求中,而且我不确定为什么会发生这种情况。预期的行为是它继续前进并告诉我下一个参数“artist_name”未设置,但这不会发生。

最佳答案

我个人喜欢使用array_diff来解决这个问题。

PHP array_diff documentation

您关心的是您的预期输入给定输入相同。

所以你可以像这样使用array_diff:

  $params_needed = ["song_name", "artist_name", "song_release_date",
                "song_genre", "song_medium"];
  $given_params = array_keys($_POST);

  $missing_params = array_diff($params_needed, $given_params);

  if(!empty($missing_params)) {
    // uh oh, someone didn't complete the form completely...
  }

关于php - 检查是否设置了多个 POST 参数的最简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53889927/

相关文章:

javascript - 可以在没有 ssh 访问或保持终端运行的情况下构建使用 socket.io 的网络聊天应用程序吗?

php - MySQL : check the content change or not

python - 尝试在此单行循环中增加 Y

python - 将列表的 numpy 数组展平为每行 4 个值

php - 日历导出 (Webcal)

php - 搜索并替换数千行 php

c - 退出 FOR 并打印消息的任何想法

php - PHP一键提交多个表单

python - 将Python REST API身份验证脚本转换为curl命令

node.js - 发出 https 发布请求时,node.js 中的错误 "ssl3_get_record:wrong version number"