PHP offre una sintassi alternativa per alcune delle sue strutture di controllo, ovvero: if, while, for, foreach, e switch. In ognuno di questi casi, l'approccio di base della sintassi alternativa è quello di cambiare la parentesi graffa aperta con il segno di duepunti (:) e la parentesi graffa chiusa rispettivamente con endif;, endwhile;, endfor;, endforeach;, o endswitch;. <?php if ($a == 5): ?> A è uguale a 5 <?php endif; ?>

Nell'esempio presentato, il blocco HTML "A è uguale a 5" è inserito all'interno in un blocco if scritto con la sintassi alternativa. Il blocco HTML sarà visualizzato solo se $a è uguale a 5.

La sintassi alternativa si applica nello stesso modo anche ad else e ad elseif. Quanto segue è un esempio della struttura if con sezioni elseif ed else nel formato alternativo: <?php if ($a == 5): echo "a è uguale a 5"; echo "..."; elseif ($a == 6): echo "a è uguale a 6"; echo "!!!"; else: echo "a è diverso sia da 5 che da 6"; endif; ?>

Nota: L'utilizzo delle due sintassi all'interno dello stesso blocco non è supportato.
Attenzione: Qualsiasi output (inclusi gli spazi bianchi) tra un'istruzione switch e il primo case risulterà in un errore sintattico. Per esempio, questo non è valido: <?php switch ($foo): ?> <?php case 1: ?> ... <?php endswitch; ?> Mentre questo è valido, poichè la nuova riga dopo l'istruzione switch è considerata parte della chiusura ?Gt e quindi non viene scritto niente in output tra lo switch e il case: <?php switch ($foo): ?> <?php case 1: ?> ... <?php endswitch; ?>

Vedere anche while, for, ed if per ulteriori esempi.