我正在整理一个脚本,该脚本通过几个$ _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的内容并获得了满意的结果,所以数据都很好。
非常感谢任何帮助。
答案 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。