Функция array_merge()

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

Тренажер PHP

Часто в программировании возникает задача объединить два или несколько списков в один. Например, у вас есть список утренних дел и список вечерних, а вы хотите получить общий план на день. Для таких операций в PHP существует мощная функция `array_merge()`.

Однако её поведение не всегда очевидно. Она работает по-разному в зависимости от того, какие ключи у массивов: числовые или строковые. В этом тренажере мы разберем все тонкости: от простого "склеивания" индексированных массивов до хитрого слияния ассоциативных, где одни значения могут перезаписывать другие. Также ты узнаешь, что происходит с ключами при слиянии и как объединить сразу несколько массивов за один раз. Это ключевая функция, которую нужно знать, чтобы уверенно работать с данными.

Список тем

Простое слияние двух массивов

id: 38965_task_merge_1

Начнем с самого простого. У нас есть два списка чисел. Твоя задача — использовать функцию `array_merge()`, чтобы объединить их в один большой массив. Заполни пропуски, чтобы выполнить слияние.

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

$first_half = [1, 2, 3];
$second_half = [4, 5, 6];

$full_list = input1S($first_half, input2S);

print_r($full_list);
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Слияние ассоциативных массивов

id: 38965_task_merge_2

Теперь посмотрим, как `array_merge()` работает с ассоциативными массивами. Если у них разные ключи, функция просто объединит их в один массив. Посмотри на код и выбери, как будет выглядеть итоговый массив.

Выберите правильный вариант ответа
<?php
$user_main = ['name' => 'John'];
$user_details = ['age' => 30];

$full_user = array_merge($user_main, $user_details);

print_r($full_user);
Сообщения
Проверить
Показать подсказку

Перезапись при совпадении строковых ключей

id: 38965_task_merge_3

Это ключевой момент в работе `array_merge()`! Если в обоих массивах есть элемент с одинаковым СТРОКОВЫМ ключом, значение из последнего (правого) массива перезапишет значение из первого. Напиши, какое значение будет у ключа 'status' в итоговом массиве.

Что должно получиться?
<?php
$order = ['id' => 42, 'status' => 'pending'];
$new_data = ['status' => 'shipped', 'updated_at' => '2023-10-27'];

$updated_order = array_merge($order, $new_data);

echo $updated_order['status'];
Сообщения
Проверить
Показать подсказку

Особый случай: слияние числовых ключей

id: 38965_task_merge_4

А вот с числовыми ключами `array_merge()` ведет себя совсем иначе! Значения не перезаписываются, а просто добавляются в конец, при этом все числовые ключи в результирующем массиве переиндексируются. Посмотри на код и выбери правильный результат.

Выберите правильный вариант ответа
<?php
$arr1 = [0 => 'a', 1 => 'b'];
$arr2 = [0 => 'c'];

$result = array_merge($arr1, $arr2);
print_r($result);
Сообщения
Проверить
Показать подсказку

Функция возвращает новый массив

id: 38965_task_merge_5

`array_merge()` не изменяет исходные массивы, а создает и возвращает новый, объединенный. Программист вызвал функцию, но забыл сохранить ее результат в переменную. Исправь строку вызова `array_merge`, чтобы результат слияния сохранился в переменную `$result`.

Найдите ошибку и исправьте
<?php
$arr1 = [1, 2];
$arr2 = [3, 4];
array_merge($arr1, $arr2);
print_r($result); // Fatal error: Undefined variable $result
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Слияние более двух массивов

id: 38965_task_merge_6

Функция `array_merge()` может принимать любое количество массивов в качестве аргументов. Дополни код, чтобы объединить три списка продуктов в один общий список покупок.

Заполните пропуски
<?php
$fruits = ['apple', 'banana'];
$vegetables = ['carrot', 'potato'];
$dairy = ['milk', 'cheese'];

$shopping_list = array_merge(input1S, input2S, input3S);

print_r($shopping_list);
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Приоритет при слиянии настроек

id: 38965_task_merge_7

Частый сценарий: есть настройки по умолчанию и есть настройки пользователя. Нам нужно их объединить так, чтобы настройки пользователя имели приоритет. Собери скрипт, который правильно объединит два массива, чтобы итоговый цвет темы был 'dark'.

Перетяните в правильном порядке строки из одного блока в другой
$user_prefs = ['theme' => 'dark', 'show_avatars' => false];
$final_config = array_merge($defaults, $user_prefs);
<?php
print_r($final_config);
// Неверный порядок, пользовательские настройки будут перезаписаны
$wrong_config = array_merge($user_prefs, $defaults);
$defaults = ['theme' => 'light', 'lang' => 'en', 'show_avatars' => true];
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку
🚀 Визуализатор кода
0 / 0
Скорость:
Режим:
💡 Что происходит?
Загрузите пример для начала...
🤔
Проверка знаний
История шагов
Готов
НайтиКурс.Ру