2

可能重复:
如何在 PHP 中使用 switch case 'or'?

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

4

3 回答 3

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

Switch 语句将寻找第一个真正的案例,在该语句之后将继续执行所有操作,直到找到breakdefault

于 2012-11-08T19:24:29.080 回答
2

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

<?php

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

?>
于 2012-11-08T19:24:51.937 回答
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;
    }

?>
于 2012-11-08T19:32:26.937 回答