2016-08-02 31 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没有人可以神奇地找出你需要修复的基础上你提供的例子(这完美的作品)。 –