奇怪的switch语句行为

时间:2011-11-17 21:05:48

标签: php if-statement switch-statement

有人可以告诉我为什么这个switch语句输出与if语句不同? 更重要的是,我如何让他们输出相同的内容?

切换

switch ($list_day) { 
        case $today : 
            $calender .= '<td class="today">';
        default : 
            $calender .= '<td>';
    }

如果

if ($list_day == $today) {
        $calendar.= '<td class="today">';
    } else {
        $calendar.= '<td>';
    }

3 个答案:

答案 0 :(得分:4)

您遗漏了break声明:

switch ($list_day) { 
        case $today : 
            $calender .= '<td class="today">';
            break;
        default : 
            $calender .= '<td>';
    }

如果没有中断switch语句,则继续执行下一个标签。这允许您将标签链接在一起:

switch($number) {
case 1: case 2: case 3:
  echo '1 - 3';
  break;
case 4:
  echo '4';
  break;
default
  echo 'any other number';
}

答案 1 :(得分:1)

你忘了你的BREAK;

在Pascal样式代码中,例如pascal,visual basic,您不需要在每种情况下都是BREAK。但是在C-Style / Java / PHP / etc中你需要:

switch ($list_day) { 
    case $today : 
        $calender .= '<td class="today">';
        break;
    default : 
        $calender .= '<td>';
}

这可以用来做一些我想让你自己弄清楚的奇特事物!

答案 2 :(得分:1)

你有一个错字:

switch ($list_day) { 
    case $today : 
        $calendar .= '<td class="today">';
        break;
    default : 
        $calendar .= '<td>';
}

除了我之前提交的休息时,您输入了$ calender而不是$ calendar ...