2011-11-17 86 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

我錯了,畢竟,檢查我的第二篇文章 –