Альтернативный синтаксис циклов

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

Тренажер PHP

Помимо стандартного синтаксиса с фигурными скобками `{}`, PHP предлагает альтернативный синтаксис для управляющих конструкций, включая циклы. Этот стиль, где открывающая скобка заменяется двоеточием `:`, а закрывающая — ключевым словом `end...;`, особенно удобен при встраивании PHP-логики в HTML-шаблоны. Он делает код более наглядным и помогает избежать путаницы со скобками в сложных шаблонах. В этом тренажере мы научимся распознавать и использовать альтернативный синтаксис для циклов `for`, `while` и `foreach`, разберем типичные ошибки и соберем из частей полноценные HTML-фрагменты, сгенерированные с помощью PHP.

Список тем

Основы: Альтернативный синтаксис for

id: 38955_task_alts_1

Давайте преобразуем простой цикл `for`. В альтернативном синтаксисе открывающая фигурная скобка `{` заменяется двоеточием `:`, а закрывающая `}` — конструкцией `endfor;`. Заполните пропуски, чтобы код заработал.

Заполните пропуски
<?php for ($i = 0; $i < 3; $i++) input1S ?>
    <p>Номер <?= $i ?></p>
<?php input2S ?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Сопоставьте стандартный и альтернативный синтаксис

id: 38955_task_alts_2

У каждого цикла есть свой "двойник" в альтернативном синтаксисе. Сопоставьте стандартные конструкции с фигурными скобками с их эквивалентами, использующими двоеточие и `end...`.

Сопоставьте строки в правой части с соответствующими строками в левой по порядковому номеру
for (...) { ... }
while (...) { ... }
foreach (...) { ... }
while (...): ... endwhile;
foreach (...): ... endforeach;
for (...): ... endfor;
Сообщения
Проверить
Показать подсказку

Ошибка в закрытии цикла foreach

id: 38955_task_alts_3

Этот код пытается вывести список элементов массива, используя альтернативный синтаксис `foreach`. Однако цикл закрывается неправильной конструкцией, что вызовет ошибку. Найдите и исправьте ошибку.

Найдите ошибку и исправьте
<?php $items = ["Первый", "Второй"]; ?>
<ul>
    <?php foreach ($items as $item): ?>
        <li><?= $item ?></li>
    <?php endwhile; ?>
</ul>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Соберите HTML-список из строк

id: 38955_task_alts_4

Альтернативный синтаксис особенно удобен для генерации HTML. Расставьте строки кода в правильном порядке, чтобы создать ненумерованный список (`

    `), элементы которого берутся из массива.

Расставьте строки в правильном порядке
<?php endforeach; ?>
</ul>
<?php $data = ['PHP', 'HTML', 'CSS']; ?>
    <li>Элемент: <?= $item ?></li>
<ul>
<?php foreach ($data as $item): ?>
Сообщения
Проверить
Показать подсказку

Что выведет этот while-шаблон?

id: 38955_task_alts_5

Проанализируйте этот фрагмент кода, использующий альтернативный синтаксис для `while`. Какой именно текст будет сгенерирован в результате его работы? Выберите единственно верный вариант.

Выберите правильный вариант ответа
<?php
$counter = 2;
while ($counter > 0):
    echo "Пункт {$counter}. ";
    $counter--;
endwhile;
?>
Сообщения
Проверить
Показать подсказку

Вложенные циклы в шаблоне

id: 38955_task_alts_6

Используя токены из банка, завершите код, который генерирует простую таблицу 2x2. Здесь используется вложенный `for` в альтернативном синтаксисе для создания строк и ячеек.

Нужно правильно расставить в пропуски предложенные варианты
<table border="1">
    <?php for ($row = 1; $row <= 2; $row++) input1S ?>
        <tr>
            <?php for ($col = 1; $col <= 2; $col++): ?>
                <td>(<?= $row ?>,<?= $col ?>)</td>
            <?php endfor; ?>
        </tr>
    <?php input2S ?>
</table>
:
endfor;
endif;
{
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Что будет в итоговой строке?

id: 38955_task_alts_7

Этот код использует `foreach` и `if`/`else` в альтернативном синтаксисе для формирования строки. Проанализируйте логику и напишите, какая именно строка будет выведена в результате работы скрипта.

Что должно получиться?
<?php
$langs = ['PHP', 'JS'];
$result = '';
foreach ($langs as $lang):
    if ($lang === 'PHP'):
        $result .= 'PHP!';
    else:
        $result .= 'JS?';
    endif;
endforeach;
echo $result;
?>
Сообщения
Проверить
Показать подсказку
НайтиКурс.Ру