正确使用PHP开关语句

正确使用PHP开关语句,php,Php,可能重复: 我想用switch做一个测试,这是我写的代码: <?php $moisActuelle = date("n"); switch($moisActuelle) { case 1 || 2 || 3 : echo'L\'hiver'; break; case 4 || 5 || 6 : echo'Le printemp';

可能重复:

我想用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是什么,这段代码总是在第一种情况下执行

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

Switch语句将查找第一个真实情况,然后该语句将继续执行所有操作,直到找到
break
default
我不确定您是否可以这样做,但有一种方法:

<?php

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

?>

我更喜欢这样:

<?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];
?>
请参阅此问题:或直到找到“continue”语句。只是为了彻底。
<?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;
    }

?>