首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP:检查变量是否存在,以及是否有等于某个值的值

PHP:检查变量是否存在,以及是否有等于某个值的值
EN

Stack Overflow用户
提问于 2010-10-24 17:51:56
回答 12查看 66.6K关注 0票数 43

我有(或没有)一个来自我的查询字符串的变量$_GET['myvar'],我想检查这个变量是否存在,以及它的值是否与if语句中的某个值相对应:

我所做的和所想的并不是最好的方法:

if(isset($_GET['myvar']) && $_GET['myvar'] == 'something'):做点什么

我的问题是,有没有办法在不两次声明变量的情况下做到这一点?

这是一个简单的例子,但想象一下,必须比较许多这样的$myvar变量。

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2010-10-24 18:05:17

可悲的是,这是唯一的方法。但是有一些方法可以处理更大的数组。例如,如下所示:

代码语言:javascript
运行
复制
$required = array('myvar', 'foo', 'bar', 'baz');
$missing = array_diff($required, array_keys($_GET));

变量$missing现在包含$_GET数组中缺少的必需值的列表。您可以使用$missing数组向访问者显示一条消息。

或者你可以使用类似这样的东西:

代码语言:javascript
运行
复制
$required = array('myvar', 'foo', 'bar', 'baz');
$missing = array_diff($required, array_keys($_GET));
foreach($missing as $m ) {
    $_GET[$m] = null;
}

现在,每个必需的元素至少都有一个默认值。您现在可以使用if($_GET‘’myvar‘== 'something'),而不用担心没有设置密钥。

更新

清理代码的另一种方法是使用一个检查是否设置了值的函数。

代码语言:javascript
运行
复制
function getValue($key) {
    if (!isset($_GET[$key])) {
        return false;
    }
    return $_GET[$key];
}

if (getValue('myvar') == 'something') {
    // Do something
}
票数 19
EN

Stack Overflow用户

发布于 2016-08-19 01:12:29

如果您正在寻找一行程序来检查您还不确定是否设置了变量的值,这是可行的:

代码语言:javascript
运行
复制
if ((isset($variable) ? $variable : null) == $value) { }

唯一可能的缺点是,如果您正在测试true/false - null将被解释为等于false

票数 17
EN

Stack Overflow用户

发布于 2018-11-24 12:57:28

从PHP7开始,您可以使用Null Coalescing Operator ??来避免双重引用:

代码语言:javascript
运行
复制
$_GET['myvar'] = 'hello';
if (($_GET['myvar'] ?? '') == 'hello') {
    echo "hello!";
}

输出:

代码语言:javascript
运行
复制
hello!

一般而言,表达式

代码语言:javascript
运行
复制
$a ?? $b

等同于

代码语言:javascript
运行
复制
isset($a) ? $a : $b
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4007752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档