我需要使用单个语句isset检查$_POST
变量是否存在。
if (isset$_POST['name'] && isset$_POST['number'] && isset$_POST['address'] && etc ....)
有没有简单的方法来实现这个目标?
答案 0 :(得分:14)
$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)
使用数组从 表单 收集数据,如下所示:
并在帖子上处理您的表单,如下所示:
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']))
您也可以使用它。它可能更容易。