2011-05-23 3 views
21
<? switch ($var): ?> 
    <? case 1: ?> 
    It's 1! 
    <? break ?> 
<? endswitch ?> 

Voglio fare qualcosa del genere, in altre parole utilizzare l'istruzione switch in modelli PHP. Questo è possibile con la dichiarazione if. Il codice precedente generain PHP 5.3. Il PHP docs suggerisce che questo dovrebbe essere possibile.Istruzione switch in PHP iniettata HTML

Qualcuno può confermare che questo non funziona, o meglio, dimmi cosa sto facendo male?

Grazie.

+1

Si dovrebbe usare ' Spudley

+1

Dove lo vedi nella documentazione? Sono andato al link che hai fornito, ma non riesco a trovare nulla sul supporto per il mixaggio di HTML in linea con un'istruzione switch. –

+1

risposta

43

Ho letto nel documento php che il tuo esempio non dovrebbe funzionare.

Qualsiasi uscita (compresi gli spazi) tra uno switch e il primo caso provocherà un errore di sintassi. Ad esempio, questo è valido

Prova a modificare:

<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

+3

Grazie! (per tutti gli altri, il codice è da [questo commento] (http://se2.php.net/manual/en/control-structures.alternative-syntax.php#80668)) – Znarkus

14

Hai

?>\n\n<? 

dopo lo switch che diventa

switch($var): 
echo "\n\t"; 
case 1: 

Pensa al tuo script come PHP con HTML al suo interno, piuttosto che HTML impreziosito. Il binario PHP ottiene prima il file.

Si potrebbe desiderare di utilizzare qualcosa come HEREDOC per richiamare l'HTML senza escape.

+0

Ah che lo spiega :) grazie! – Znarkus

2

propongo questa formattazione semplice, testato e di lavoro:

<? switch($var) : case 1 : ?> 

    <div>One</div> 

<? break; case 2 : ?> 

    <div>Two</div> 

<? break; case 3 : ?> 

    <div>Three</div> 

<? break; endswitch; ?>