Этот урок посвящён альтернативному синтаксису условных конструкций в PHP: if (условие): ... elseif (...): ... else: ... endif;. Такой стиль часто используют в шаблонах, когда вёрстка перемежается с PHP-кодом. Мы шаг за шагом потренируемся ставить двоеточия после меток блоков, закрывать конструкцию ключевым словом endif;, не путать с фигурными скобками и не забывать точку с запятой после закрывающих ключевых слов. В заданиях встретится работа с HTML-вставками, вложенными проверками и сборкой кода из частей. По пути разберём типичные ошибки: лишняя ; вместо :, «end if;» вместо «endif;», смешивание скобок с альтернативным синтаксисом. Форматы заданий разные: заполним пропуски, починим код, соберём фрагменты в правильном порядке, предскажем результат и разнесём утверждения по категориям. Сначала базовая форма if–else–endif, потом ветка elseif и вложенный if внутри альтернативного синтаксиса. В описаниях заданий заранее указан контекст, чтобы не гадать о скрытых значениях.
- Модуль 1: Основы синтаксиса PHP
- Модуль 2: Переменные и типы данных
- Модуль 3: Операторы
- Модуль 4: Условные конструкции
- Модуль 5: Циклы
- Модуль 6: Массивы
- Индексированные массивы.
- Ассоциативные массивы.
- Многомерные массивы.
- Добавление элементов в массив.
- Удаление элементов из массива.
- Функция count().
- Функция array_push() и array_pop().
- Функция array_shift() и array_unshift().
- Функция array_merge().
- Функция array_slice().
- Функция array_splice().
- Функция in_array().
- Функция array_search().
- Функция array_keys() и array_values().
- Функция array_unique().
- Функция array_reverse().
- Сортировка: sort(), rsort().
- Сортировка: asort(), arsort().
- Сортировка: ksort(), krsort().
- Функция array_map().
- Функция array_filter().
- Функция array_reduce().
- Функция array_walk().
- Функция array_column().
- Деструктуризация массивов.
- Модуль 7: Функции
- Объявление функций.
- Вызов функций.
- Параметры функций.
- Возврат значений return.
- Значения параметров по умолчанию.
- Передача по значению.
- Передача по ссылке.
- Переменное количество аргументов.
- Оператор распаковки ....
- Типизация параметров.
- Типизация возвращаемых значений.
- Nullable типы.
- Union типы (PHP 8).
- Именованные аргументы (PHP 8).
- Анонимные функции.
- Стрелочные функции.
- Замыкания и use.
- Рекурсивные функции.
- Глобальные переменные в функциях.
- Статические переменные в функциях.
- Модуль 8: Работа со строками
- Одинарные и двойные кавычки.
- Экранирование символов.
- Heredoc и Nowdoc синтаксис.
- Функция strlen().
- Функция substr().
- Функция str_replace().
- Функция strpos() и strrpos().
- Функция explode() и implode().
- Функция trim(), ltrim(), rtrim().
- Функция strtolower() и strtoupper().
- Функция ucfirst() и ucwords().
- Функция str_repeat().
- Модуль 9: Суперглобальные переменные
- Модуль 10: Работа с формами
- Модуль 11: Работа с файлами
- Модуль 12: Дата и время
- Модуль 13: Регулярные выражения
- Модуль 14: Сессии и Cookie
- Модуль 15: Include и Require
- Модуль 16: Объектно-ориентированное программирование
- Модуль 17: Пространства имен
- Модуль 18: Обработка ошибок и исключений
- Модуль 19: Работа с JSON и XML
- Модуль 20: Работа с базами данных MySQLi
- Модуль 21: PDO - PHP Data Objects
- Модуль 22: Composer и зависимости
- Модуль 23: cURL и HTTP запросы
- Модуль 24: REST API
- Модуль 25: Безопасность
- Модуль 26: Генераторы и итераторы
- Модуль 27: Reflection API
- Модуль 28: Работа с изображениями
- Модуль 29: Отправка email
- Модуль 30: Паттерны проектирования
- Модуль 31: Тестирование
- Модуль 32: Продвинутые возможности PHP 8+
Минимальный каркас: if–else–endif
Дополните альтернативный синтаксис так, чтобы при возрасте 16 печаталось "minor", а при 18 и больше — "adult". Нужны корректные двоеточия после меток блоков и правильное закрытие всей конструкции. Не смешивайте этот стиль с фигурными скобками.
<?php
$age = 16;
if ($age >= 18) input1S
echo 'adult';
else input2S
echo 'minor';
input3S
?>Альтернативный синтаксис внутри шаблона
Код условно выводит пункты меню. Считайте только текстовое содержимое элементов списка без разметки (игнорируйте теги и пробелы). Выберите, что по смыслу выведет программа при текущем значении флага авторизации.
<?php
$isAuth = false;
?>
<?php if ($isAuth): ?>
- Logout
<?php else: ?>
- Login
- Register
<?php endif; ?>
Почините двоеточия и закрытие endif;
В примере три ошибки альтернативного синтаксиса: в строке с elseif неверный символ завершения, у else отсутствует двоеточие, а у закрывающего endif нет точки с запятой. Исправьте эти строки, чтобы код работал.
<?php$flag = false;if ($flag): echo 'YES';elseif ($flag == false); // тут должен быть альтернативный синтаксис echo 'NO';else // пропущено двоеточие echo 'MAYBE';endif // нужна точка с запятой?>Сопоставьте элементы альтернативного if
Соотнесите пояснения слева с правильными фрагментами кода справа. Обратите внимание на двоеточия после меток блоков и закрывающее слово для альтернативного синтаксиса.
endif;if ($x > 0):else:elseif ($x > 0):Заполните заголовки веток и закрытие
Соберите альтернативный синтаксис для оценки балла: 90+ — "A", 60+ — "OK". Нужны правильные ключевые слова в заголовках веток и корректные завершения. В банке есть лишние элементы, не относящиеся к альтернативному if.
<?php
$score = 72;
input1S ($score >= 90)input2S
echo 'A';
input3S ($score >= 60)input4S
echo 'OK';
input5S
?>Соберите шаблон: ветки admin/editor/guest
Нужно составить фрагмент шаблона, где значение переменной 'guest' приводит к выводу заголовка Guest. Используйте альтернативный синтаксис if–elseif–else–endif с PHP-вставками и HTML-строками. В наборе есть лишние и синтаксически неверные строки.
<?php$user = 'guest';?><?php if ($user === 'admin'): ?><h1>Admin</h1><?php elseif ($user === 'editor'): ?><h1>Editor</h1><?php else: ?><h1>Guest</h1><?php endif; ?><?php endif ?>}<?php fi; ?><?php else ?><?php elseif ($user === 'editor'); ?>Вложенный if в альтернативном синтаксисе
Код выводит символы, соответствующие веткам. Игнорируйте пробелы и переносы, учитывайте лишь последовательность букв. Определите, что выведется при заданных значениях переменных.
<?php
$mode = 'dark';
$beta = true;
?>
<?php if ($mode === 'dark'): ?>
D
<?php if ($beta): ?>
B
<?php endif; ?>
<?php elseif ($mode === 'light'): ?>
L
<?php else: ?>
E
<?php endif; ?>Восстановите порядок: if–elseif–else–endif
Соберите корректный пример альтернативного синтаксиса. Переменная равна нулю, значит должна сработать ветка else. Важно, чтобы заголовки веток были с двоеточием, а конструкция закрывалась endif;.
<?php$n = 0;if ($n > 0): echo 'POS';elseif ($n < 0): echo 'NEG';else: echo 'ZERO';endif;?>Разложите фрагменты по категориям
Определите, какие строки относятся к альтернативному синтаксису if, какие являются ошибками для него, а какие вообще о другом. Перетащите элементы в подходящие контейнеры.
Вывод по роли: admin/editor/other
Определите, что выведет код с альтернативным синтаксисом при текущем значении переменной роли. Введите ровно один символ, соответствующий сработавшей ветке.
<?php
$role = 'editor';
if ($role === 'admin'):
echo 'A';
elseif ($role === 'editor'):
echo 'E';
else:
echo 'U';
endif;
?>