2016-08-02 130 views
0

我有Drupal 7網站。我有以下開關結構。默認情況下總是執行開關

$day = (int)$node->field_hours_count[LANGUAGE_NONE][0]['value']; 
switch ($day) { 
    case 1: 
     constructNode($node,"sunday"); 
     echo 'node updated successfuly'; 
     break; 
    case 2: 
     constructNode($node,"monday"); 
     echo 'node updated successfuly'; 
     break; 
    case 3: 
     constructNode($node,"tuesday"); 
     echo 'node updated successfuly'; 
     break; 
    default : 
     echo 'no node found'; 
     exit(); 
    } 

這裏constructNode()是一個接受兩個參數的函數。

function constructNode($node,$dayOfWeek) 
{ 
    //core operation 
    return $node; 
} 

問題是假設$ day = 1,然後執行case 1加上默認情況。對於$ day的每個值,default大小寫正在執行。

PHP - 版本V 5.5.12

如何避免這種情況?

+2

什麼* *當默認語句執行時的'$ day'的值? – TZHX

+0

使用'print_r($ day)',我正在檢查$ day&它打印正確的值。如果傳遞值是1,那麼它打印1,如果2然後2等等。美元日沒有錯。我已經對它進行了2-3次交叉檢查 –

+0

我懷疑'field_hours_count'是否存儲了日期。 – user4035

回答

1

問題是假設$day = 1然後情況1被執行加上默認情況。對於每個值$day,默認情況下都會執行。

這不是Switch語句的工作方式。在任何情況下執行後,break退出該語句,因此沒有其他匹配。發生這種情況的唯一可能的方法是,如果您使用不同值調用Switch語句兩次。

+0

伴侶,我知道,但因爲我面臨這樣奇怪的事情,因此張貼在這裏 –

+0

@pkhode沒有人可以神奇地找出你需要修復的基礎上你提供的例子(這完美的作品)。 –