2013-06-19 77 views
4

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

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

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

+0

为什么要检查25 $ _Post? –

+0

我有25个变量,例如 – PHP

+0

我只是想知道你是否可以在逻辑上减少这个操作,比如检查提交按钮$ _POST ['submit']。虽然,这是我所有的猜测,如果你不能跳过这个检查@ajtrichards的答复是好的。 –

回答

12

使用简单方式与array_diffarray_keys

$check_array = array('key1', 'key2', 'key3'); 
if (!array_diff($check_array, array_keys($_POST))) 
    echo 'all exists'; 
3

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

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

    } 
} 
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变量的改变,你并不需要更新使用新名称的数组。

+0

我想检查是否存在变量,而不是NOT NULL。那么你的第二个选择是正确的? – PHP

+0

去第一个 - 把变量放在数组中,并检查是否有一个'$ _POST'变量匹配​​ – ajtrichards

+0

那么,如何在if条件中使用此代码的结果呢? – sectus

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 
    } 
    } 
} 
+0

此代码只是检查$ _POST变量是否在定义的数组中。但不检查定义数组中的所有变量。因此这个代码对于这个问题的目的是没有用的。 – PHP

+0

这段代码首先遍历所有post变量,并检查当前变量是否应该被验证,如果它应该验证,那么在你的问题中需要isset()检查。 –

+0

你正在测试25帖子变量,如果你发送更多的变量在你的帖子,如30(隐藏的领域,后按钮等)如何。然后你必须找到要检查的25个。 –

-2

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

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

+1

这是行不通的,'isset()'仅适用于变量。您的示例构建一个布尔表达式,然后尝试使用isset测试结果(true或false)。布尔表达式的结果将取决于'$ _POST'变量的内容。 – martinstoeckli

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');