2015-04-12 11 views
6

Una funzione di PHP che mi piace usare è lo stile colon if (non so che cosa è effettivamente chiamato.)Se e else if in PHP, stile colon

<?php if(something):?> 
    <html stuff> 
<?php endif;?> 

Ma di recente ho provato a farlo con più casi:

<?php if(something):?> 
    <html stuff> 
<?php else if(something):?> 
    <html stuff> 
<?php endif;?> 

E ottengo un errore nella terza riga (la else if):

Unexpected T_IF

È possibile fare un if-else se in questo modo?

+2

Non ho downvote, ma non credo che vale la pena di inviare la domanda e soprattutto non se si è già risolto il problema (avete risposto alla tua domanda subito). È semplicemente un errore di sintassi che è considerato "off-topic" – hek2mgl

+1

@ hek2mgl Non è stato comunque un errore tipografico. Ho effettivamente risolto il mio problema mentre stavo scrivendo la domanda, ma ho pensato che la comunità potesse trarre beneficio dalle conoscenze presentate in questa domanda. altrimenti se (2 parole) è completamente valido in PHP; non è un errore tipografico. – David

+0

@MathNerdProductions 1. 'Errore di analisi:' ** errore di sintassi, ** 'imprevisto 'se' (T_IF)' si tratta di un errore di sintassi. 2. Chiunque legga il manuale lo sa – Rizier123

risposta

7

Sono riuscito a farlo funzionare.

In questo caso specifico, else if non è sinonimo di elseif.

Sostituire elseif per else if risolve il problema.

<?php if(something):?> 
    <html stuff> 
<?php elseif(something):?> 
    <html stuff> 
<?php endif;?> 

Da PHP.net:

Note: Note that elseif and else if will only be considered exactly the same when using curly brackets as in the above example. When using a colon to define your if/elseif conditions, you must not separate else if into two words, or PHP will fail with a parse error.

+2

Potrebbe valere la pena includere la spiegazione di [questo commento] (http://php.net/manual/en/control-structures.elseif.php#115851) su * perché * non funziona. Vale a dire che 'else if' è in realtà una singola istruzione' else' la cui istruzione è un 'if', e i due punti non sono opzionali nella sintassi alternativa, a differenza di {} nella sintassi normale. – IMSoP