Могу ли я иметь несколько случаев, которые делают то же самое? - PullRequest
1 голос
/ 23 октября 2008

Первый, безусловно, что-то работает, но какой из приведенных ниже является эффективным способом?

switch($type) {
    case 1:
        print 'success';
    break;

    case 2:
        print 'success';
    break;

    case 3:
        print 'success';
    break;

    case 4:
        print 'success for type 4';
    break;
}

Поскольку печать 1, 2 и 3 делает то же самое, могу ли я сделать это?

switch($type) {
    case 1, 2, 3:
        print 'success';
    break;

    case 4:
        print 'success for type 4';
    break;
}

или

switch($type) {
    case 1:
    case 2:
    case 3:
        print 'success';
    break;

    case 4:
        print 'success for type 4';
    break;
}

Ответы [ 3 ]

19 голосов
/ 23 октября 2008
 switch($type) 
 {
     case 1:
     case 2:
     case 3:
         print 'success';
     break;
     case 4:
         print 'success for type 4';
     break;
 }

Это путь!

3 голосов
/ 23 октября 2008

В руководстве по PHP приведен пример, например, ваш третий переключатель :

<?php
switch ($i) {
case 0:
case 1:
case 2:
    echo "i is less than 3 but not negative";
    break;
case 3:
    echo "i is 3";
}
?>
2 голосов
/ 24 октября 2008

Я согласен с остальными в использовании:

switch ($i) {
   case 0: //drop
   case 1: //drop
   case 2: //drop
      echo "i is 0, 1, or 2";
   break;
   // or you can line them up like this.
   case 3: case 4: case 5:
      echo "i is 3, 4 or 5";
   break;
}

Единственное, что я хотел бы добавить, - это комментарии для многострочных пропущенных операторов case, чтобы вы знали, что это не ошибка, когда вы (или кто-то еще) просматриваете код после того, как он был изначально написан.

...