代码之家  ›  专栏  ›  技术社区  ›  Tegra Detra

php开关案例问题

  •  4
  • Tegra Detra  · 技术社区  · 15 年前

    我想说的是 $level > -100 && $level < 100

    $level  = 0;
    
                    switch($level){                                                                                       
    
                    case $level > -100:                                                                                   
                    break;
                    case $level <  100:                                                                                   
                    break;
                    default:
                    echo '5';
                    return null;                                                                                          
                    }              
    

    你能用这样的switch语句吗。

    7 回复  |  直到 15 年前
        1
  •  6
  •   Peter    9 年前

    明确地 将原问题的精神与适当的开关结构联系起来。所以,作为记录:

    switch (true) {
        case (($level>-100) && ($level<100)):
            echo 'in range one';
            break;
        case (($level>200) && ($level<300)):
            echo 'in range two';
            break;
        default:
            echo 'out of range';
    }
    

        2
  •  4
  •   casablanca    15 年前

    当你说 switch ($level) $level . 每个 case if

    if ($level > -100 && $level < 100)
      ; // do nothing; equivalent of break in this case
    else
      echo '5';
    

    更简单的是,只需否定以下条件:

    if ($level <= -100 || $level >= 100)
      echo '5';
    
        3
  •  4
  •   NikiC    15 年前

    除了if/else,还有另一种方法:

    switch (true)                                                                               
        case $level > -100:
            break;
        case $level <  100:
            break;
        default:
            echo '5';
            return null;
    }
    
        4
  •  2
  •   Timothy    15 年前

    其他答案同时正确和不正确。不正确,因为它可以做你想在PHP。。。改变 switch($level) switch(true) 你的例子会有用的。正确,因为这是一种糟糕的形式,如果其他程序员在你的代码中看到这一点,他们可能会用干草叉来攻击你。这不是switch语句的用法,在大多数其他语言中也不会像这样工作。

        5
  •  0
  •   Mchl    15 年前

    不,不能。Switch只执行“equals”类型比较。

        6
  •  0
  •   Femaref    15 年前

    不,你不能。这个 switch 语句中需要文字 case 阻碍。改用if语句:

    if(!($level > -100 && $level < 100))
    {
      echo '5';
      return null;
    }
    
        7
  •  -3
  •   Mark Snidovich    15 年前

    这是人们提倡的原因之一 case if-else if-ifelse-else 更有用。

    推荐文章