2012-08-25 14 views
9

Hey v'è una sintassi alternativa per istruzione switch in PHP, ma questo codice non funziona:Sintassi alternativa per l'interruttore

<div> 
<?php switch($variable): ?> 
<?php case 1: ?> 
<div> 
Newspage 
</div> 
<?php break;?> 
<?php case 2: ?> 
</div> 
Forum 
<div> 
<?php break;?> 
<?php endswitch;?> 
</div> 

Parse error: syntax error, unexpected T_INLINE_HTML, expecting T_ENDSWITCH or T_CASE or T_DEFAULT in /path/to/file on line #

risposta

19

soluzione per questo problema è mettere switch($variable): con case 1: nella stesso blocco di codice PHP:

<div> 
<?php switch($variable): 
case 1: ?> 
<div> 
Newspage 
</div> 
<?php break;?> 
<?php case 2: ?> 
</div> 
Forum 
<div> 
<?php break;?> 
<?php endswitch;?> 
</div> 
+0

Questo è lo stesso esempio dai commenti della [documentazione di PHP] (http://www.php.net/manual/en/control-structures.alternative-syntax.php#80668) , ma c'è un spiegabile motivo per cui questo funziona, ma il codice nella domanda non lo fa? O è solo un bug in PHP? – Travesty3

+2

Nevermind. [Questa risposta] (http://stackoverflow.com/a/6096600/259457) fornisce alcune spiegazioni. In pratica stai inserendo un'interruzione di riga, che non è consentita direttamente all'interno di un'istruzione 'switch' (al di fuori di' case's. In un'istruzione 'if' o un ciclo, non è un problema avere un'interruzione di riga, ma 'switch' è diverso. – Travesty3