Альтернативный синтаксис if-endif

Тренажер по PHP для пользователей с начальным уровнем подготовки.

Тренажер PHP

Этот урок посвящён альтернативному синтаксису условных конструкций в PHP: if (условие): ... elseif (...): ... else: ... endif;. Такой стиль часто используют в шаблонах, когда вёрстка перемежается с PHP-кодом. Мы шаг за шагом потренируемся ставить двоеточия после меток блоков, закрывать конструкцию ключевым словом endif;, не путать с фигурными скобками и не забывать точку с запятой после закрывающих ключевых слов. В заданиях встретится работа с HTML-вставками, вложенными проверками и сборкой кода из частей. По пути разберём типичные ошибки: лишняя ; вместо :, «end if;» вместо «endif;», смешивание скобок с альтернативным синтаксисом. Форматы заданий разные: заполним пропуски, починим код, соберём фрагменты в правильном порядке, предскажем результат и разнесём утверждения по категориям. Сначала базовая форма if–else–endif, потом ветка elseif и вложенный if внутри альтернативного синтаксиса. В описаниях заданий заранее указан контекст, чтобы не гадать о скрытых значениях.

Список тем

Минимальный каркас: if–else–endif

id: 38942_task1

Дополните альтернативный синтаксис так, чтобы при возрасте 16 печаталось "minor", а при 18 и больше — "adult". Нужны корректные двоеточия после меток блоков и правильное закрытие всей конструкции. Не смешивайте этот стиль с фигурными скобками.

Заполните пропуски
<?php
$age = 16;
if ($age >= 18) input1S
    echo 'adult';
else input2S
    echo 'minor';
input3S
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Альтернативный синтаксис внутри шаблона

id: 38942_task2

Код условно выводит пункты меню. Считайте только текстовое содержимое элементов списка без разметки (игнорируйте теги и пробелы). Выберите, что по смыслу выведет программа при текущем значении флага авторизации.

Выберите правильный вариант ответа
<?php
$isAuth = false;
?>
    <?php if ($isAuth): ?>
  • Logout
  • <?php else: ?>
  • Login
  • Register
  • <?php endif; ?>
Сообщения
Проверить
Показать подсказку

Почините двоеточия и закрытие endif;

id: 38942_task3

В примере три ошибки альтернативного синтаксиса: в строке с elseif неверный символ завершения, у else отсутствует двоеточие, а у закрывающего endif нет точки с запятой. Исправьте эти строки, чтобы код работал.

Найдите ошибку и исправьте
<?php
$flag = false;
if ($flag):
    echo 'YES';
elseif ($flag == false); // тут должен быть альтернативный синтаксис
    echo 'NO';
else // пропущено двоеточие
    echo 'MAYBE';
endif // нужна точка с запятой
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Сопоставьте элементы альтернативного if

id: 38942_task4

Соотнесите пояснения слева с правильными фрагментами кода справа. Обратите внимание на двоеточия после меток блоков и закрывающее слово для альтернативного синтаксиса.

Сопоставьте строки в правой части с соответствующими строками в левой по порядковому номеру
Завершение альтернативного if
Начало условия в альтернативном синтаксисе
Ветка иначе в альтернативном синтаксисе
Дополнительная проверка между ветками
endif;
if ($x > 0):
else:
elseif ($x > 0):
Сообщения
Проверить
Показать подсказку

Заполните заголовки веток и закрытие

id: 38942_task5

Соберите альтернативный синтаксис для оценки балла: 90+ — "A", 60+ — "OK". Нужны правильные ключевые слова в заголовках веток и корректные завершения. В банке есть лишние элементы, не относящиеся к альтернативному if.

Нужно правильно расставить в пропуски предложенные варианты
<?php
$score = 72;
input1S ($score >= 90)input2S
    echo 'A';
input3S ($score >= 60)input4S
    echo 'OK';
input5S
?>
if
elseif
else
endif;
:
:
fi;
end if;
end;
elseif;
then
endfor;
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Соберите шаблон: ветки admin/editor/guest

id: 38942_task6

Нужно составить фрагмент шаблона, где значение переменной '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'); ?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Вложенный if в альтернативном синтаксисе

id: 38942_task7

Код выводит символы, соответствующие веткам. Игнорируйте пробелы и переносы, учитывайте лишь последовательность букв. Определите, что выведется при заданных значениях переменных.

Выберите правильный вариант ответа
<?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

id: 38942_task8

Соберите корректный пример альтернативного синтаксиса. Переменная равна нулю, значит должна сработать ветка else. Важно, чтобы заголовки веток были с двоеточием, а конструкция закрывалась endif;.

Расставьте строки в правильном порядке
<?php
$n = 0;
if ($n > 0):
    echo 'POS';
elseif ($n < 0):
    echo 'NEG';
else:
    echo 'ZERO';
endif;
?>
Сообщения
Проверить
Показать подсказку

Разложите фрагменты по категориям

id: 38942_task9

Определите, какие строки относятся к альтернативному синтаксису if, какие являются ошибками для него, а какие вообще о другом. Перетащите элементы в подходящие контейнеры.

Перетяните элементы в соответствующие блоки
Верно для альтернативного if
Ошибки для альтернативного if
Прочее
if ($x):
elseif ($x > 1):
else:
endif;
endif
fi;
end if;
$x ? $a : $b
}
endswitch;
case 'a':
<?php endif; ?>
Сообщения
Проверить
Показать подсказку

Вывод по роли: admin/editor/other

id: 38942_task10

Определите, что выведет код с альтернативным синтаксисом при текущем значении переменной роли. Введите ровно один символ, соответствующий сработавшей ветке.

Что должно получиться?
<?php
$role = 'editor';
if ($role === 'admin'):
    echo 'A';
elseif ($role === 'editor'):
    echo 'E';
else:
    echo 'U';
endif;
?>
Сообщения
Проверить
Показать подсказку
НайтиКурс.Ру