我有(或没有)一个变量 $_GET['myvar']
来 self 的查询字符串,我想检查这个变量是否存在以及该值是否对应于我的 if 中的内容声明:
我正在做的和想的不是最好的方法:
if(isset($_GET['myvar']) && $_GET['myvar'] == 'something')
: 做某事
我的问题是,是否有任何方法可以在不声明变量两次的情况下做到这一点?
这是一个简单的案例,但想象一下必须比较许多这样的 $myvar
变量。
最佳答案
遗憾的是,这是唯一的方法。但是有一些方法可以处理更大的数组。比如这样的:
$required = array('myvar', 'foo', 'bar', 'baz');
$missing = array_diff($required, array_keys($_GET));
变量 $missing 现在包含所需值的列表,但 $_GET 数组中缺少这些值。您可以使用 $missing 数组向访问者显示一条消息。
或者你可以使用类似的东西:
$required = array('myvar', 'foo', 'bar', 'baz');
$missing = array_diff($required, array_keys($_GET));
foreach($missing as $m ) {
$_GET[$m] = null;
}
现在每个必需的元素至少有一个默认值。您现在可以使用 if($_GET['myvar'] == 'something') 而不必担心未设置 key 。
更新
清理代码的另一种方法是使用检查值是否已设置的函数。
function getValue($key) {
if (!isset($_GET[$key])) {
return false;
}
return $_GET[$key];
}
if (getValue('myvar') == 'something') {
// Do something
}
关于PHP:检查变量是否存在,但是否具有等于某物的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4007752/