if语句与switch语句

时间:2015-06-18 04:50:34

标签: php if-statement switch-statement

我知道这个话题在此之前已经讨论过了,但是没有提到这个案例,而且我仍然没有积极哪个更好。

如果您的if语句类似于:

if (($var=='A') || ($var=='B') || ($var=='C') || ($var=='D')...) { echo "hello world"; }

在这种情况下,使用switch语句会更好吗?

谢谢!

6 个答案:

答案 0 :(得分:2)

根据我对这个问题的理解,我认为我最好使用in_array();当你想检查这个或那个是否为真时,你可以做同样的事情来制作一个数组,然后检查它是否在那里并做了类似的事情:

$array=array("A","B","C","D");
if(in_array($var,$array)){
   echo 'hello world';
}

如果您希望根据变量执行不同的操作,请使用开关,例如:

$lang='fr';
switch($lang){
   case 'fr': echo "français"; break;
   case 'sp': echo "spanish"; break;
   default: echo "english"; break;
}

最后使用if检查具体比较,让我们说:

if($lang=='fr'){
  echo "bonjour le monde";
}else{
  echo "hello world";
}

答案 1 :(得分:1)

在这种情况下你也可以使用switch,如果存在相同的值,则不要为cases添加具有相同值的中断:

switch ($var) {
    case 'A':
    case 'B':
    case 'C':
    ........ //Any other cases
        echo "hello world";
        break;
    default:
        echo "something else";
        break;
}

答案 2 :(得分:1)

我真的不认为你需要考虑这种事情的表现,但如果你想要一个更注重绩效的回应,请看这篇文章:What is the relative performance difference of if/else versus switch statement in Java?

如果您只想组织代码, 我会用:

<?php
$os = array("Mac", "NT", "Irix", "Linux");
if (in_array("Irix", $os)) {
    echo "Got Irix";
}
if (in_array("mac", $os)) {
    echo "Got mac";
}
?>

来源:http://php.net/manual/en/function.in-array.php

答案 3 :(得分:0)

首先,在您的示例中,您指定而不是比较 使用一个等号(=)完成赋值,而在php(===)中使用两个或(相当)三个进行比较。

开关可能稍短,但不一定使代码更易读或可维护 如果你的支票的 ANY 是真的,它应该打印“hello world”,这意味着交换机要么使用大量的掉落,这有点难看(并在一堆中引发警告) IDE),或要求您在所有情况下都有echo "hello world";,这会为每个案例添加额外的行。

就个人而言,在这种情况下,我会使用一个包含要检查的值的数组,然后在if语句中使用in_array函数。
类似的东西:

$array = ['A', 'B', 'C']; // and so on.
if(in_array($val, $array)) {
  echo "hello world";
} 

编辑:
另外值得注意的是,关于交换机,交换机在进行比较时没有进行类型检查 也就是说,当交换机进行比较时,它使用==而非===

答案 4 :(得分:0)

如果你认为你可能想要做一些事情而不是回声&#34;你好世界&#34;对于每个条件,然后是,我使用开关。如果我必须检查字母表中的12个字母,我也会使用开关。否则,忘记开关。对于组合表达式,if语句显然非常方便。就个人而言,我打破了这样长的表达方式:

if ( $var = 'A'
     ||
     $var = 'B'
     ||
     ( 
         $var = 'B' 
         && 
         $var = 'C' 
     )
     ||
     $var = 'D'
    ) {
    echo "hello world";
}

答案 5 :(得分:0)

关于你的问题有两点。

1:对if条件使用双等号(==),否则条件将始终为真。

2:如果你愿意,你可以使用switch case语句。

switch ($var) {
  case 'A':
   case 'b':
    case 'c':
     case 'd':
        echo "hello world";
    break;
  default:
    // Default case
    break;
}