6

我正在编写一个脚本,该脚本会提取几个 $_GET 变量,然后在脚本中使用这些变量来计算报价等。

我的噩梦只是能够确定它们中的任何一个是否没有值,例如 ?var1=500&var2=&var3=Yes var2 是那里的罪魁祸首。

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

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

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

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

这不起作用,我考虑过issetempty但我相信这两个选项在这种情况下都没用。我在许多资料中读到 $_GET 参数没有给出值默认为 "' 所以我很困惑为什么这不起作用。

由于有时参数会设置为 0,所以我不能在这里使用empty 。

不用说,我已经打印了$_GET的内容,得到了满意的结果,所以数据都很好。

非常感谢任何帮助。

4

4 回答 4

2

缺少的参数不会出现在$_GET. 假设查询字符串如下所示:

index.php?page=5

如果您期望一个id参数,它不会自动显示在$_GET. 您只需要isset在使用它们时检查使用(并针对空字符串) - 而不是先发制人。那是行不通的。

于 2012-08-30T23:53:08.760 回答
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。

于 2012-08-31T00:43:08.373 回答
0

这样的事情怎么样?

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

foreach($expectedVars as $key => $val) {
    if($_GET[$val] == "") {
        $proceed = 0;
    } else {
        $proceed = 1;
    }
}
?>
于 2012-08-31T00:16:53.427 回答
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;
}
?>
于 2012-08-31T00:18:48.743 回答