2016-08-02 28 views
0

ausgeführt wird Ich habe Drupal 7 Stelle. Ich habe die folgende Switch-Struktur.Standardfall, der immer von Schalter

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

Hier ist constructNode() eine Funktion, die zwei Parameter akzeptiert.

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

Ausgabe ist suppose $ day = 1 dann case 1 ausgeführt wird, plus Standardfall. Für jeden Wert von $ day wird default Fall ausgeführt.

PHP - Version v 5.5.12

Wie kann ich das verhindern?

+2

Was * ist * der Wert von $ Tag, wenn die Standardanweisung ausgeführt wird? – TZHX

+0

mit 'print_r ($ tag)', ich überprüfe $ Tag & es druckt den richtigen Wert. Wenn der übergebene Wert 1 ist, wird 1 gedruckt, wenn 2 dann 2 usw. Es ist nichts falsch mit $ Tag. Ich habe es für 2-3 mal darauf überprüft –

+0

Ich bezweifle, dass 'field_hours_count' die Tage speichert. – user4035

Antwort

1

Problem ist angenommen $day = 1 dann wird Fall 1 plus Standardfall ausgeführt. Für jeden Wert von wird der Standardfall ausgeführt.

Das ist nicht wie Switch Anweisungen funktionieren. Nachdem ein beliebiger Fall ausgeführt wurde, gibt die break die Anweisung aus, damit nichts anderes mehr übereinstimmt. Der einzige mögliche Weg dies ist, wenn Sie die Anweisung Switch zweimal mit unterschiedlichen Werten aufrufen.

+0

Mate, ich weiß das, aber da ich so seltsame Sache konfrontiert daher hier –

+0

@pkhode niemand kann magisch herausfinden, was Sie beheben müssen basierend auf dem Beispiel, das Sie zur Verfügung gestellt (was perfekt funktioniert). –