Foreach с ключами и значениями

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

Тренажер PHP

Если `foreach` — это швейцарский нож для работы с массивами, то его синтаксис с ключом и значением — это самый острый и полезный клинок в этом ноже. Эта конструкция (`foreach ($array as $key => $value)`) открывает полный доступ к структуре массива, позволяя одновременно получать и ключ, и значение каждого элемента. Это незаменимо при работе с ассоциативными массивами, где ключи несут важную смысловую нагрузку. В этом тренажере мы сфокусируемся именно на этой мощной возможности: научимся правильно писать синтаксис, предсказывать результат и применять его для генерации HTML-разметки и обработки структурированных данных.

Список тем

Основы синтаксиса: ключ и значение

id: 38950_task_fekey_1

Для получения и ключа, и значения в цикле `foreach` используется специальный синтаксис с оператором `=>`. Заполните пропуски, чтобы правильно определить переменные для ключа и значения и вывести данные о пользователе.

Заполните пропуски
<?php

$user_data = ["name" => "Анна", "city" => "Москва"];

foreach ($user_data as input1S => input2S) {
    echo $field . ": " . $value . "\n";
}

?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Соберите конструкцию из банка

id: 38950_task_fekey_2

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

Нужно правильно расставить в пропуски предложенные варианты
<?php
$product_specs = ['cpu' => 'i7', 'ram' => '16GB'];

foreach ($product_specs as input1S input2S input3S) {
    // ... тело цикла
}

echo "Синтаксис верный!";
?>
=>
$spec
$info
->
as
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Роли переменных в цикле

id: 38950_task_fekey_3

В конструкции `foreach ($settings as $option => $val)` каждая часть играет свою роль. Сопоставьте переменные и операторы с их правильным описанием.

Сопоставьте строки в правой части с соответствующими строками в левой по порядковому номеру
$settings
$option
=>
$val
Оператор, разделяющий ключ и значение
Переменная, в которую на каждой итерации помещается ключ элемента
Переменная, в которую на каждой итерации помещается значение элемента
Массив, который перебирается в цикле
Сообщения
Проверить
Показать подсказку

Исправьте частую синтаксическую ошибку

id: 38950_task_fekey_4

В коде перепутан оператор для получения ключа-значения с оператором для доступа к свойствам объекта. Это распространенная ошибка у новичков. Найдите строку с ошибкой и исправьте ее.

Найдите ошибку и исправьте
<?php
$headers = ["Content-Type" => "application/json", "Status" => "200 OK"];
 
foreach ($headers as $header_name -> $header_value) {
    echo "$header_name: $header_value\n";
}
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Что выведет код на экран?

id: 38950_task_fekey_5

Внимательно проанализируйте цикл и условный оператор внутри него. Код должен выводить только те параметры, значение которых не является числом. Выберите правильный вариант вывода.

Выберите правильный вариант ответа
<?php
$product = [
    'name' => 'Laptop',
    'price' => 1500,
    'status' => 'available'
];

foreach ($product as $key => $value) {
    if (is_string($value)) {
        echo $key . " ";
    }
}
?>
Сообщения
Проверить
Показать подсказку

Соберите скрипт для генерации отчета

id: 38950_task_fekey_6

Соберите из фрагментов скрипт, который генерирует и выводит строку отчета в формате "Ключ: Значение;". Будьте внимательны, некоторые строки являются лишними и приведут к ошибке.

Перетяните в правильном порядке строки из одного блока в другой
$report = "";
foreach ($data as $key => $val) {
echo $report;
}
$report .= "$key: $val; ";
$data = ['id' => 42, 'status' => 'processed'];
$report = "$key: $val; ";
echo $val;
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Какой ключ будет выведен последним?

id: 38950_task_fekey_7

Этот цикл перебирает массив и останавливается, как только находит значение 'stop'. Какой *ключ* будет выведен на экран после завершения цикла? Введите только сам ключ, без кавычек.

Что должно получиться?
<?php

$signals = ['a' => 'go', 'b' => 'wait', 'c' => 'stop', 'd' => 'off'];
$lastKey = '';

foreach ($signals as $key => $value) {
    $lastKey = $key;
    if ($value === 'stop') {
        break;
    }
}

echo $lastKey;
?>
Сообщения
Проверить
Показать подсказку

Найдите логическую ошибку

id: 38950_task_fekey_8

Скрипт должен найти и вывести роль пользователя ('admin'), но вместо этого он выводит слово 'role'. В коде нет синтаксических ошибок, но есть логическая. Найдите строку с ошибкой и исправьте ее.

Найдите ошибку и исправьте
<?php
$user = ['name' => 'John', 'role' => 'admin'];
$user_role = 'unknown';
foreach ($user as $key => $value) {
    if ($key === 'role') {
        $user_role = $key;
    }
}
echo $user_role;
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку
НайтиКурс.Ру