wenn {} in if: endif

8

Warum wird es nicht funktionieren? Erscheint Parse-Fehler: Syntaxfehler, unerwartet ':' ... in Zeile 7

%Vor%

Aber wenn ich es ändere (nur zusätzliche else-Anweisung):

%Vor%

Es funktioniert gut.

Warum ist das? ist es nicht ein PHP Bug? Oder es gibt eine Regel, wenn ... sonst sollte ich wissen?

Wie auch immer, ich benutze PHP 5.3.3 Version.

    
user1301744 29.03.2012, 20:12
quelle

3 Antworten

14

Ich bin mir nicht sicher, ob ich das hier als Bug bezeichnen würde, aber ich glaube, dass Sie dieses Problem haben, weil sonst hängen geblieben ist , in Verbindung mit Ihrer gemischten if-else-Syntax:

%Vor%

Beachten Sie, dass die else in Zeile 5 mehrdeutig ist: sie könnte entweder zur ersten oder zweiten if -Anweisung gehören.

Sie können diese Mehrdeutigkeit leicht entfernen und Ihren Syntaxfehler beheben, indem Sie nach Ihrem verschachtelten if :

ein Semikolon einfügen %Vor%

Bitte verwenden Sie diese Syntax nicht, es sei denn, Sie möchten, dass Ihre anderen Programmierer Sie im Schlaf zu Tode erschlagen.

    
NullUserException 29.03.2012, 20:24
quelle
1

Wie in Kommentaren zur PHP-Handbuch-Kontrollstrukturseite erwähnt, erscheint der Parser nicht immer Angenommen, ein if von einem Stil sollte nicht mit einem else mit dem anderen verglichen werden.

    
Troubadour 29.03.2012 20:25
quelle
0

Die Doppelpunktform des if / else kann bei verschachtelten ifs mehrdeutig sein. In Ihrem Beispiel wird dem else der zweite if angehängt (wie es sollte.) Um dies zu vermeiden, müssen Sie dem Interpreter explizit mitteilen, dass der else mit dem ersten if gepaart ist, entweder durch Hinzufügen eines else zu dem zweiten if ( Wie Sie in Ihrem zweiten Codeblock anzeigen) oder verwenden Sie {}, um den Kontrollfluss explizit zu definieren.

Mit anderen Worten, Sie können mehrere Formen von if-Anweisungen verwenden. Zum Beispiel:

%Vor%

Ist vollkommen gültig. Allerdings würde ich davon abraten, Formulare zu mischen, da es die Lesbarkeit wegnimmt.

    
John Sparwasser 29.03.2012 20:28
quelle

Tags und Links