Znarkus Znarkus - 9 days ago 6
PHP Question

Switch statement in PHP injected HTML

<? switch ($var): ?>
<? case 1: ?>
It's 1!
<? break ?>
<? endswitch ?>


I want to do something like that, in other words use the switch statement in PHP templates. This is possible with the if statement. The above code generates
Parse error: syntax error, unexpected T_INLINE_HTML, expecting T_ENDSWITCH or T_CASE or T_DEFAULT
in PHP 5.3. The PHP docs suggests that this should be possible.

Can someone confirm that this doesn't work, or rather, tell me what I'm doing wrong?

Thanks.

Answer

I read in the php doc that your example should not work.

Any output (including whitespace) between a switch statement and the first case will result in a syntax error. For example, this is invalid

Try this instead:

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

http://php.net/control-structures.alternative-syntax