代码之家  ›  专栏  ›  技术社区  ›  Alex Pliutau

PHP开关case在case中的值大于1

  •  37
  • Alex Pliutau  · 技术社区  · 15 年前

    我有另一种情况。我有一个保存值的变量(“Weekly”、“Monthly”、“Quarterly”、“Annual”),还有一个保存值从1到10的变量。

    switch ($var2) {
           case 1:
              $var3 = 'Weekly';
              break;
           case 2:
              $var3 = 'Weekly';
              break;
           case 3:
              $var3 = 'Monthly';
              break;
           case 4:
              $var3 = 'Quarterly';
              break;
           case 5:
              $var3 = 'Quarterly';
              break;
           // etc.
    }
    

    switch ($var2) {
           case 1, 2:
              $var3 = 'Weekly';
              break;
           case 3:
              $var3 = 'Monthly';
              break;
           case 4, 5:
              $var3 = 'Quarterly';
              break;
    }
    

    我怎么能用PHP做呢?提前谢谢你。对不起我的英语。

    3 回复  |  直到 11 年前
        1
  •  106
  •   Hannes    11 年前

    从性能角度来看,最简单也可能是最好的方法是:

    switch ($var2) {
           case 1:
           case 2:
              $var3 = 'Weekly';
              break;
           case 3:
              $var3 = 'Monthly';
              break;
           case 4:
           case 5:
              $var3 = 'Quarterly';
              break;
    }
    

    另外,在更复杂的情况下:

    switch ($var2) {
        case ($var2 == 1 || $var2 == 2):
            $var3 = 'Weekly';
            break;
        case 3:
            $var3 = 'Monthly';
            break;
        case ($var2 == 4 || $var2 == 5):
            $var3 = 'Quarterly';
            break;
    }
    

        2
  •  11
  •   deceze    15 年前
    switch ($var2) {
           case 1 :
           case 2 :
              $var3 = 'Weekly';
              break;
           case 3 :
              $var3 = 'Monthly';
              break;
           case 4 :
           case 5 :
              $var3 = 'Quarterly';
              break;
    }
    

    在找到break语句之前,将执行第一个匹配案例之后的所有操作。所以它只会进入下一个案例,这允许你“分组”案例。

        3
  •  0
  •   Soccerwidow    12 年前

    $abctest = mt_rand(1, 1000);
    switch ($abctest) {
       case ($abctest < 250):
         echo "A code here";
         break;
       case ($abctest < 500):
         echo "B code here";
         break;
       case ($abctest < 750):
         echo "C code here";
         break;
       default:
         echo "D code here";
         break;
    
    推荐文章