试图检查$ _GET是否有空参数

时间:2012-08-30 23:48:57

标签: php

我正在整理一个脚本,该脚本通过几个$ _GET变量,然后在脚本中用于计算报价等。

我遇到的噩梦只是能够确定其中是否有任何值没有值,例如?var1 = 500& var2 =& var3 =是,其中var2是那里的笨蛋。

根据所有$ _GET变量是否都有值,我会采取不同的行动。

我研究并提出了这个选项:

<?php 
foreach($_GET as $name => $value) {
    if ($value == "") {
        $proceed = 0;
    } else {
        $proceed = 1;
    }
}
?>

我现在只是为了测试而使用$ proceed来回显一段简单的文本。

这不起作用,我考虑过 isset 为空,但我相信这两种方案在这种情况下都没用。我在许多消息来源中读到,未给定值的$ _GET参数默认为“',所以我很困惑为什么这不起作用。

我不能在这里使用,因为有时参数会设置为0。

不言而喻,我已经打印了$ _GET的内容并获得了满意的结果,所以数据都很好。

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:2)

缺少参数未显示在$_GET中。假设查询字符串如下所示:

index.php?page=5

如果您期望id参数,则不会自动显示在$_GET中。您只需要在使用时检查isset(以及空字符串) - 而不是先发制人。那是行不通的。

答案 1 :(得分:0)

这样的事情怎么样?

<?php 
$expectedVars = array('var1', 'var2');

foreach($expectedVars as $key => $val) {
    if($_GET[$val] == "") {
        $proceed = 0;
    } else {
        $proceed = 1;
    }
}
?>

答案 2 :(得分:0)

如果我正确地阅读你的问题:

检查要设置的参数并设置一个值,但为方便起见,还要使用foreach循环$ _GET。

也许,制作一个你想要的参数数组,然后循环遍历它,并检查$ _GET是否包含相同的密钥。

<?php 
$allowed = array('var1','var2','var3');
$error = array();

foreach($allowed as $key) {
    if(array_key_exists($key,$_GET)) {
        //Validate, value must contain t least 1 len
        if(strlen($_GET[$key]) >= 1){
            $$key = $_GET[$key];
        }else{
            //Assign an error if param has a blank value
            $error[$key] = $key." parameter must contain a value";
        }

    }else{
        //Assign an error if params not been passed to the url
        $error[$key] = $key." parameter not set";
    }
}


if(!empty($error)){
    //A Params missing or has no value, dont continue
    echo 'All parameters required!<br />';
    foreach($error as $value){
        echo '* '.$value.'<br />';
    }
}else{
    //No errors do something
    echo 'var1 is set: '.$var1;
    echo 'var2 is set: '.$var2;
    echo 'var3 is set: '.$var3;
}
?>

答案 3 :(得分:0)

您可以使用以下代码定义变量列表并将其设置为通过$ _GET传递的值(如果存在),或者设置为空字符串(如果不存在或者在查询字符串中没有值):

$getvars = array();
$expectedvars = array(                    // define variables to be set from $_GET
  'var1', 'var2', 'var3', 'var4', 'var5',
);

foreach($_GET as $key => $value) {        // store all $_GET variables present
  $getvars[$key] = $value;                // in an associative array
}

foreach($expectedvars as $variable) {          // now create all vaariables,
  ${$variable} = (isset($getvars[$variable]))  // if value was passed in url
    ? $getvars[$variable]                      // then set to that value
    : '';                                      // otherwise set as empty string
}

这将使用适当的值创建变量$ var1,$ var2,$ var3,$ var4和$ var5。