适当的PHP switch语句用法

时间:2012-11-08 19:22:38

标签: php

  

可能重复:
  How to use a switch case ‘or’ in PHP?

我想使用switch进行测试,这是我写的代码:

<?php

    $moisActuelle = date("n");
    switch($moisActuelle)
    {
        case 1 || 2 || 3 : 
             echo'L\'hiver';
             break;
        case 4 || 5 || 6 : 
             echo'Le printemp';
             break;
        case 7 || 8 || 9 : 
             echo'L\'été';
             break;
        case 10 || 11 || 2 : 
             echo'L\'automne';
             break;

    }

?>

但无论$ moisActuelle是什么,这段代码总是执行第一种情况。

3 个答案:

答案 0 :(得分:4)

switch($moisActuelle)
{
    case 1: 
    case 2: 
    case 3: 
         echo'L\'hiver';
         break;
}

Switch语句将查找第一个真实案例,并且在该语句之后将继续执行所有操作,直到找到breakdefault

答案 1 :(得分:2)

我不确定你是否可以这样做,但这是一种方式:

<?php

    $moisActuelle = date("n");
    switch($moisActuelle)
    {
        case 1:
        case 2:
        case 3: 
             echo'L\'hiver';
             break;
        // etc
    }

?>

答案 2 :(得分:0)

我更喜欢用这种方式:

<?php
    $decisionTable = array(
        '1' => 'L\'hiver',
        '2' => 'L\'hiver',
        '3' => 'L\'hiver',

        '4' => 'Le printemp',
        '5' => 'Le printemp',
        '6' => 'Le printemp',

        '7' => 'L\'été',
        '8' => 'L\'été',
        '9' => 'L\'été',

        '10' => 'L\'automne',
        '11' => 'L\'automne',
        '12' => 'L\'automne',
    );

    $moisActuelle = date("n");
    echo $decisionTable[$moisActuelle];
?>

或者,如果您想使用swicth

<?php

    $moisActuelle = date("n");
    switch(true)
    {
        case in_array($moisActuelle, array(1, 2, 3)): 
             echo'L\'hiver';
             break;
        case in_array($moisActuelle, array(4, 5, 6)): 
             echo'Le printemp';
             break;
        case in_array($moisActuelle, array(7, 8, 9)): 
             echo'L\'été';
             break;
        case in_array($moisActuelle, array(10, 11, 12)): 
             echo'L\'automne';
             break;
    }

?>