2011-11-17 72 views
0

有人可以告诉我为什么这个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>'; 
    } 

回答

1

你有一个错字:

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

,以及我以前提交的突破,你输入$压延机,而不是$日历...

+0

Oooooh男人,你一定很讨厌愚蠢错别字!感谢Mathieu! :-) – Michiel

+0

也许这应该被合并到你原来的答案? – nickb

4

你缺少你break声明:

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

如果不打出来的开关statemen的执行只是继续下一个标签。这允许您将标签链接在一起:

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

你打我:-) – Charlie

+0

该死,我也一样:( –

+0

谢谢,但它仍然显示我不同的输出,然后if语句 – Michiel

1

您忘记了BREAK;

在帕斯卡风格的代码,如pascal,visual basic,你不需要在每种情况下BREAK。但在C-风格/的Java/PHP /等你需要:

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

这可以用来做一些花哨的东西,我会让你找出自己!

+0

谢谢,但它仍然显示我不同的输出然后if语句 – Michiel

+0

我错了,毕竟,检查我的第二篇文章 –