6

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

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

有什么简单的方法可以实现这一目标吗?

4

9 回答 9

17

对array_diffarray_keys使用简单的方法

$check_array = array('key1', 'key2', 'key3');
if (!array_diff($check_array, array_keys($_POST)))
    echo 'all exists';
于 2013-06-19T09:12:10.630 回答
7
$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变量发生更改,您不需要使用新名称更新数组。

于 2013-06-19T09:03:16.637 回答
2

如果设置了其中任何一个或全部,您是否需要满足条件?

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

    }
}
于 2013-06-19T09:03:11.610 回答
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
    }   
  }
}
于 2013-06-19T09:07:01.010 回答
1

您要问的正是isset页面中的内容

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

于 2018-03-23T09:08:02.537 回答
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');
于 2014-12-12T22:19:44.843 回答
0

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

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

并在邮寄时处理您的表格,如下所示:

if(isset($_POST['name'])){
      ... 
}
于 2018-03-23T08:42:16.977 回答
0

老帖子,但总是有用的

foreach ($_POST as $key => $val){
$$key = isset($_POST[$key]) ? $_POST[$key] : '';
}
于 2019-06-06T19:02:50.377 回答
-2

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

你也可以使用这个。这可能更容易。

于 2013-06-19T09:56:22.223 回答