Альтернативный синтаксис управляющих структур

PHP предлагает альтернативный синтаксис для некоторых его управляющих структур, а именно: code>if, while, for, foreach и switch. В каждом случае основной формой альтернативного синтаксиса является изменение открывающей фигурной скобки на двоеточие (:), а закрывающей скобки на endif;, endwhile;, endfor;, endforeach; или endswitch; соответственно.

Синтаксис

if...else / if...ifelse...else

Чаще всего нужно делать не вставки HTML внутрь скрипта, а вставки кода внутрь HTML. Это гораздо проще для дизайнера, который, возможно, в будущем захочет переоформить сценарий, но не сможет разобраться, что ему изменять, а что не трогать. Поэтому целесообразно бывает отделять HTML-код от программы (скрипта), например, поместить его в отдельный файл, который затем подключается к скрипту при помощи конструкции include.

					
<header>
	<h1>UserZamt</h1>
	
	<?php if( strcasecmp($usr, "admin") == 0): ?>
	<div id="avatar">
		<img src="../img/admin.png">
		<p>admin<p>
	</div>
	
	<?php elseif( strcasecmp($usr, "root") == 0 ): ?>
	<div id="avatar">
		<img src="../img/root.png">
		<p>root<p>
	</div>
	
	<?php else: ?>
	<form>
		<fieldset>
			<legend>Регистрация</legend>
			<label for="usr"></label>
			<input id="usr" name="usr" type="text" value="" placeholder="UserName"><br>
			<label for="passwd"></label>
			<input id="passwd" name="passwd" type="password" value="" placeholder="Your Password"><br>
			<input type="submit" value="Передать">
		</fieldset>
	</form>
	<?php endif; ?gt;
</header>
					
				

while / do...while

					
<table>
	<?php while($num < 3):?>
		<tr><td><?=$num++?></td><td><?=time(); sleep(1);?></td></tr>
	<?php endwhile; ?>
</table>
					
				

for

					
<?php
	$article = array(
		array("Проснувшись", "Проснувшись однажды утром после беспокойного сна, Грегор Замза обнаружил, что он у себя в постели превратился в страшное насекомое. Лежа на панцирнотвердой спине, он видел, стоило ему приподнять голову, свой коричневый, выпуклый, разделенный дугообразными чешуйками живот, на верхушке которого еле держалось готовое вот-вот окончательно сползти одеяло."),
		array("Душа моя", "Душа моя озарена неземной радостью, как эти чудесные весенние утра, которыми я наслаждаюсь от всего сердца. Я совсем один и блаженствую в здешнем краю, словно созданном для таких, как я."),
		array("Далеко-далеко", "Далеко-далеко за словесными горами в стране гласных и согласных живут рыбные тексты. Вдали от всех живут они в буквенных домах на берегу Семантика большого языкового океана."),
	);
	
	for($i=0, $size = count($article); $i < $size; ++$i):
?>
	<article>
		<h2><?=$article[$i][0]?></h2>
		<p><?=$article[$i][1]?></p>
	</article>
<?php endfor; ?>
					
				

switch

Любой вывод (включая пробельные символы) между выражением switch и первым case приведут к синтаксической ошибке.
					
<?php switch($usr): ?>
<?php case "root": ?>
	<style>body{background-color: rgba(0,153,229,0.5);}</style>
	<?php break; ?>
	
	<?php case "admin": ?>
	<style>body{background-color: rgba(255,76,76,0.5);}</style>
	<?php break; ?>
	
<?php endswitch; ?>
					
				

foreach

					
<nav>
	<ul>
	<?php 
		$nav = array(
			"Home" => "/",
			"Download" => "download.html",
			"FAQ" => "faq.html",
			"About" => "about.html",
		);
	?>
	
	........
	
	<?php foreach($nav as $a => $path): ?>
		<li><a href="<?=$path?>"><?=$a?></a></li>
	<?php endforeach; ?>
	
	</ul>
</nav>