PHP bietet noch eine weitere Schreibweise für die if then else Bedingung an. Diese ist vorallem praktisch, wenn man größere Blöcke HTML direkt ausgeben möchte (ohne z.b. „echo“ zu benutzen).
Standard-Schreibweise
<?php $id = 5; . . . if($id == 5) { echo '<p>text</p>'; echo '<p>text</p>'; echo '<p>text</p>'; echo '<p>text</p>'; } ?>
Anstelle der geschweiften Klammern kann man auch mit einer alternativen Schreibweise arbeiten:
<?php $id = 5; ?> . . . <?php if($id == 5): ?> <p>text</p> <p>text</p> <p>text</p> <p>text</p> <?php endif; ?>
Dadurch kann man auf die ganzen „echo“-Befehle verzichten und den HTML-Code direkt ausgeben. Wird die Bedingung hingegen nicht erfüllt (sprich, $id != 5), wird der HTML-Code-Block nicht ausgegeben.
Möchtest du innerhalb des HTML-Blocks PHP-Befehle ausführen, muss du erst wieder die PHP-Tags öffnen:
<?php if($id == 5): ?> <p>text</p> <p>text</p> <p>text</p> <p><?php echo 'hallo welt'; ?></p> <p>text</p> <?php endif; ?>
Geschweifte Klammern bei alternativer Syntax sind aber immernoch möglich
Das gleiche Ergebnis läßt sich aber auch mittels der geschweiften Klammer erzielen:
<?php $id = 1; ?> <?php if($id == 5) { ?> <p>text</p> <p>text</p> <?php } else if($id > 5) { ?> <p>Alternative</p> <?php } else { ?> <p>Ende</p> <?php } ?>
Nicht nur Kontrollstrukturen spielen brav mit der alternativen Syntax, auch Schleifen wie z.b. foreach haben damit keinerlei Probleme:
<?php $elemente = array(1, 2, 3); ?> <?php foreach($elemente as $element): ?> <p>Element Nr.<?php echo $element; ?></p> <?php endforeach; ?>
Zugegeben, in diesem Beispiel macht es nicht sonderlich viel auf die alternative Syntax zurückzugreifen, aber ich hoffe du verstehst worauf ich damit hinaus möchte :)