PHP:检查变量是否存在,但是否具有等于某物的值

标签 php variables if-statement isset

我有(或没有)一个变量 $_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/

相关文章:

c++ - !(variable) 和 (!variable) 之间的区别

php - 死锁和超时破坏 ACID 事务

variables - 如何在 NAnt 脚本中使用系统变量?

php - PHP mySQL 的条件 in_array 问题

vb.net - 在VB.NET中评估IF语句

templates - 从 YAML 管道到模板文件的 Azure Pipeline 动态参数

php - 在将数据插入书籍表时选择类别和子类别

php - Yii 2 有 AOP 吗?

PHP 使用来自用户输入的管道和标准输入

c++ - 类中的指针与变量