2012-08-25 13 views
9

Hey hay una sintaxis alternativa para sentencia switch en PHP, pero este código no funciona:Sintaxis alternativa para el interruptor

<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 #

Respuesta

19

solución para este problema es poner switch($variable): con case 1: en un mismo bloque de código PHP:

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

Este es el mismo ejemplo de los comentarios en el [documentación PHP] (http://www.php.net/manual/en/control-structures.alternative-syntax.php#80668) , pero ¿hay un explicable ¿Por qué esto funciona, pero el código en la pregunta no? ¿O es solo un error en PHP? – Travesty3

+2

No importa. [Esta respuesta] (http://stackoverflow.com/a/6096600/259457) proporciona alguna explicación. Básicamente estás insertando un salto de línea, que no está permitido directamente dentro de una instrucción 'switch' (fuera de' case's. En una instrucción 'if' o en un loop, no es un problema tener un salto de línea, pero 'switch' es diferente. – Travesty3