2016-08-02 2 views
0

나는 Drupal 7 사이트를 가지고 있습니다. 나는 다음 Switch 구조를 가지고있다.항상 스위치가 실행되는 기본 경우

$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; 
} 

문제는 가정 해 $ 일 = 1 다음 case 1 실행 플러스 기본 케이스입니다. $ day의 모든 값에 대해 default 사례가 실행 중입니다.

PHP - 버전 V 나는이 문제를 방지하려면 어떻게 5.5.12

?

+2

기본 문장이 실행될 때 * $ day의 값은 * 무엇입니까? – TZHX

+0

'print_r ($ day)'을 사용하여, 나는 $ day & it가 올바른 값을 출력하고 있는지 확인하고 있습니다. 전달 된 값이 1이면 1을 출력하고 2이면 2를 출력합니다. $ day에는 아무런 문제가 없습니다. 나는 그것에 대해 2-3 번 십자가를 검사했다. –

+0

나는'field_hours_count'가 그 일을 저장하는 것을 의심한다. – user4035

답변

1

문제는 $day = 1이고 사례 1이 실행되고 기본 사례가 더해진 것으로 가정합니다. $day의 모든 값에 대해 기본 사례가 실행 중입니다.

그건 어떻게 Switch 문이 작동하는지 않습니다. 어떤 경우라도 실행되면 break이 명령문을 종료하므로 다른 것은 일치하지 않습니다. 이것이 가능한 유일한 방법은 Switch 문을 다른 값으로 두 번 호출하는 것입니다.

+0

메이트, 나는 알고 있습니다. 그러나 이상한 일에 직면했기 때문에 여기에 게시했습니다. –

+0

@pkhode 아무도 마술처럼 당신이 제공 한 예를 기반으로 고칠 필요가있는 것을 알아낼 수 없습니다 (완벽하게 작동합니다). –

관련 문제