0

我想知道最快的方法是执行以下操作:

if ($var == 1) {
// 1
}
if ($var == 2) {
// 2
}
if ($var == 3) {
// 3
}

等等,但最后有类似的东西:

if ($var != 1 or 2 or 3) {
//Not a number
}

我想if(in_array(...))在最后发表一个声明,但想知道你的想法。

4

4 回答 4

6

我会这样做switch

switch ($var) {
    case 0:
        echo "var equals 0";
        break;
    case 1:
        echo "var equals 1";
        break;
    case 2:
        echo "var equals 2";
        break;
    default:
       echo "var is not 0 1 or 2"
}

此外,如果您错过了一个break声明,那么您可以轻松地做一个案例$var == 1 || $var == 2阅读更多

于 2013-05-06T22:33:48.963 回答
1

或者使用 switch case,这在很多情况下更容易阅读:

switch($var) {
    case 1: /*1*/ break;
    case 2: /*2*/ break;
    case 3: /*3*/ break;
    default: /*not 1 not 2 not 3*/
}
于 2013-05-06T22:37:22.573 回答
1

如果您只想知道 "$var" 是否在您的集合 {1, 2, 3} 中,那么 in_array 就可以了。

否则,如果您想知道您拥有哪个(如果有)价值,那么我会这样做:

if ($var == 1) {
// 1
}
else if ($var == 2) {
// 2
}
else if ($var == 3) {
// 3
}
else {
}

请注意“else if”,以免您重新检查您已经知道的内容。

还要注意,PHP 4 和 5 也有一个“switch” case/block:

switch ($i) {
    case 1:
         // 1
        break;
    case 2:
         // 2
        break;
    case 3:
         // 3
        break;
    default:
        ...
}
于 2013-05-06T22:35:17.237 回答
0

使用if/else if/else,您可以使用它来决定是严格比较还是松散比较合适。

使用switch时,比较总是松散的,这就是我更喜欢该if语句的原因,因为它明确选择了哪种模式。

if ($var === 1) {
// 1
}
else if ($var === 2) {
// 2
}
else if ($var === 3) {
// 3
}
else {
//neither 1, 2 nor 3
}
于 2013-05-06T22:33:04.553 回答