检查是否设置了两个变量?

时间:2016-08-12 10:19:48

标签: php

根据是否设置了两个变量($ skip和$ take),我想做不同的事情。我有一个很大的if else语句,有没有更有效的方法来写这个?

    if (isset($skip) && !isset($take)) {
        //skip only
    } elseif (!isset($skip) && isset($take)) {
        //take only
    } elseif (isset($skip) && isset($take)) {
        //skip and take
    } else {
        //default
    }

修改

还应该注意,如果没有指定,这将是一个将vars设置为null的方法:

getAll($skip = null, $take = null)

3 个答案:

答案 0 :(得分:9)

您可以稍微简化一下逻辑:

if (isset($skip) && isset($take)) {
    // skip and take
} elseif (isset($skip)) {
    // only skip
} elseif (isset($take)) {
    // only take
} else {
    // default 
}

答案 1 :(得分:1)

由于OP在评论中澄清了这是在方法中,并且$skip$take都是具有默认值的参数,因此可能会优先===而不是isset 。此外,您可以稍微重新排列逻辑:

function getAll($skip = null, $take = null) {

    if ($skip !== null && $take !== null) {
        // both
    } elseif ($skip !== null) {
        // skip only
    } elseif ($take !== null) {
        // take only
    } else {
        // none
    }
}

===运算符强制执行类型安全的等式检查。

参数的默认值的工作方式,如果你没有传递参数,那么参数总是保证为null,所以相等检查是一种检查的好方法他们在这里。

答案 2 :(得分:1)

如果你不喜欢,否则

$switch = (int)isset($skip) + (int)isset($take)*2;
switch($switch){
    case 0:
    //default
    break;
    case 1:
    //only skip
    break;
    case 2:
    //only take
    break;
    case 3:
    //skip and take
    break;
}