Альтернативный синтаксис PHP
Wab IT
В PHP есть альтернативный синтаксис для записи условий и циклов: if, while, for, foreach и switch.
Отличие альтернативного синтаксиса от обычного написания когда, в возможности вставлять обычный HTML текст, как в heredoc-синтаксисе.
Применяется когда необходимо вставлять большой кусок текста или таблицы. Записывается такой синтаксис без фигурных скобок, а вместо них ставим двоеточие: закрываем PHP тег и в конце условия, в PHP тегах записываем end и выход из endif; endwhile; endfor; endforeach; endswitch; Для работы альтернативного синтаксиса, нужно указывать тег <?php , а не <?. Создадим переменную $name и запишем условие. Пример
<?php $name = 'Админ'; ?>
<?php if ($name == 'Админ') : ?>
если в переменную нейм попадет админ то выводим <p>
Доступ разрешен.
<?php elseif ($name == "Пользователь") : ?>
Здравствуйте <?= $name ?>, для доступа авторизуйтесь под админ.<br><p> Мы вставили переменную PHP, как в обычный HTML текст
<?php else : ?>
И закрыли условие командой end if;
<?php endif; ?> // вышли из условия
Да переменную нейм можно было просто добавить в тег php с условием.
Как видим мы в условии просто записали обычный текст без синтаксиса PHP.
Мы могли записать это и обычным способом или альтернативным, но в PHP
<?php if ($name == 'Админ') : echo 'если в переменную нейм попадет админ то выводим <br>Доступ разрешен. '; elseif ($name == "Пользователь") : echo "$name , для доступа авторизуйтесь под админ. <p> Мы вставили переменную PHP, как обычно </p>"; else : echo 'И закрыли условие командой end if'; endif; ?>
Поменяйте нейм в переменной на Пользователь, а после на 1.
Так же вы вы сможете записывать все, из вышеперечисленных циклов и условий. Пример
<?php
$num = 1;
while ($num < 5) : ?>
Будем увеличивать пока 1 не станет <?= $num++ ?> <br>
<?php endwhile; ?>
С условием switch, case с записью в альтернативном синтаксисе есть ньюанс. Между switch и первым case не должно быть пробелов. Пример
<?php switch ($num): ?><?php // лучше записать так чтобы ваш редактор не выставил пробел автоматически
case 1: ?>
текст кейс равен 1
<?php case 4: ?>
текст кейс равен 4
<?php case 5: ?>
переменная равна 5
<?php endswitch ?>
Попробуйте сами записать с пробелом и если вы уберете пробел к примеру в VS Code, то он сам его вернет и выдаст ошибку, поэтому запись верху предпочтительнее.
<?php switch ($num): ?>
<?php<p> case 5: ?></p>
<?php endswitch ?>
Да у нас переменная нум стала 5, так как мы ее увеличили в цикле. while
Домашнее задание
Возьмем из раннее созданного урока наш многомерный массив шкаф и выведем его для примера циклом foreach и for, записав альтернативным синтаксисом.
$shkaf = [
' майка ' => [' майка с рисунком ', 7, ' футболки однотонные ', 5],
' свитер' => [' полувер ', 3, ' шерстяной ', 4,],
' джинсы ' => [' синие ', 4, ' черные ',],
];
И если вы не забыли, для того чтобы перебрать массив циклом for, нужно в нем переписать ключи в числа, вместо строк.
Проверить домашнее задание