如何使用isset()检查多个$ _POST变量是否存在?

时间:2013-06-19 08:59:12

标签: php post superglobals

我需要使用单个语句isset检查$_POST变量是否存在。

if (isset$_POST['name']  &&  isset$_POST['number']  &&  isset$_POST['address']  &&  etc ....)

有没有简单的方法来实现这个目标?

9 个答案:

答案 0 :(得分:14)

使用array_diffarray_keys

的简单方法
$check_array = array('key1', 'key2', 'key3');
if (!array_diff($check_array, array_keys($_POST)))
    echo 'all exists';

答案 1 :(得分:5)

$variables = array('name', 'number', 'address');

foreach($variables as $variable_name){

   if(isset($_POST[$variable_name])){
      echo 'Variable: '.$variable_name.' is set<br/>';
   }else{
      echo 'Variable: '.$variable_name.' is NOT set<br/>';
   }

}

或者,遍历每个$_POST键/对

foreach($_POST as $key => $value){

   if(isset($value)){
      echo 'Variable: '.$key.' is set to '.$value.'<br/>';
   }else{
      echo 'Variable: '.$key.' is NOT set<br/>';
   }

}

最后一种方法可能是您最简单的方法 - 如果您的$_POST个变量发生任何变化,则无需使用新名称更新数组。

答案 2 :(得分:3)

如果设置了任何条件或者所有条件,您是否需要满足条件?

foreach ($_POST as $var){
    if (isset($var)) {

    }
}

答案 3 :(得分:1)

$variableToCheck = array('key1', 'key2', 'key3');

foreach($_POST AS $key => $value)
{
   if( in_array($key, $variableToCheck))
  {
     if(isset($_POST[$key])){
     // get value
     }else{
     // set validation error
    }   
  }
}

答案 4 :(得分:1)

您所询问的正是isset page

中的内容
isset($_POST['name']) && isset($_POST['number']) && isset($_POST['address'])

与:

相同
isset($_POST['name'], $_POST['number'], $_POST['address'])

如果你想要一个更好或更实用的方法断言这个,考虑到你已经拥有了所有必需的键,那么你可以使用类似的东西:

$requiredKeys = ['name', 'number', 'address'];
$notInPost = array_filter($requiredKeys, function ($key) {
    return ! isset($_POST[$key]);
});

请注意,isset不会返回与array_key_exists

相同的结果

答案 5 :(得分:0)

以下是一个自定义函数,它将所需的已发布元素的数组作为参数,如果它们全部发布并且没有任何一个是空字符串''则返回true,如果至少有则返回false其中一个不是:

function checkPosts($posts){
  if (!is_array($posts)) return "Error: Invalid argument, it should be an array";
  foreach ($posts as $post){
    if (!isset($_POST[$post]) || $_POST[$post] == '') return false;
  }
  return true;
} 
// The structure of the argument array may be something like:

$myPosts = array('username', 'password', 'address', 'salary');

答案 6 :(得分:0)

使用数组 表单 收集数据,如下所示:

  • PersonArray ['name],
  • PersonArray ['地址],
  • PersonArray ['email]等

并在帖子上处理您的表单,如下所示:

if(isset($_POST['name'])){
      ... 
}

答案 7 :(得分:0)

旧帖子,但总是有用的

foreach ($_POST as $key => $val){
$$key = isset($_POST[$key]) ? $_POST[$key] : '';
}

答案 8 :(得分:-2)

if isset(($_POST['name']) && ($_POST['number']) && ($_POST['address']))

您也可以使用它。它可能更容易。