Как сливать два массива в PHP? Разные варианты с примерами
Основные способы объединения массивов в PHP
Самым эффективным и часто используемым способом является функция array_merge(). Она создаёт новый массив, содержащий элементы из переданных массивов. При совпадении строковых ключей последнее значение заменяет предыдущее, а числовые ключи переиндексируются.
$first = ['a' => 1, 'b' => 2];
$second = ['b' => 3, 'c' => 4];
$result = array_merge($first, $second);
print_r($result);
отсортировать массив по значению php (сортировка массива по значению php)
Array
(
[a] => 1
[b] => 3
[c] => 4
)
цикл значений php (цикл по массиву в php)
Типичная ошибка: при работе с числовыми ключами array_merge переиндексирует их, что может нарушить ожидаемую структуру, если ключи имели значение. Для сохранения числовых ключей используйте оператор +.
Как объединить массивы без перезаписи одинаковых строковых ключей?
Применяется оператор +. Он добавляет элементы из второго массива только если ключ отсутствует в первом. Строковые ключи из первого массива не перезаписываются, числовые ключи сохраняются (но при одинаковых числовых ключах остаётся значение первого массива).
$first = ['a' => 1, 'b' => 2];
$second = ['b' => 3, 'c' => 4];
$result = $first + $second;
print_r($result);
Php получить индекс (получение индекса массива в php)
Array
(
[a] => 1
[b] => 2
[c] => 4
)
Php значение массива в строку (преобразование массива в строку php)
Распространённая проблема: оператор + не работает рекурсивно для вложенных массивов. Если нужно объединить многомерные массивы, используйте array_merge_recursive().
Как рекурсивно объединить вложенные массивы?
Функция array_merge_recursive() работает аналогично array_merge, но при совпадении строковых ключей образует массив из объединяемых значений, а не заменяет их. Числовые ключи переиндексируются.
$first = ['colors' => ['red', 'green']];
$second = ['colors' => ['blue']];
$result = array_merge_recursive($first, $second);
print_r($result);
Php есть ли значение в массиве (поиск значения в массиве php)
Array
(
[colors] => Array
(
[0] => red
[1] => green
[2] => blue
)
)
Php удалить элемент массива по значению (php удалить элемент массива по значению)
Ошибка: если оба значения не являются массивами, array_merge_recursive не сможет их объединить и выдаст предупреждение. Проверяйте типы данных перед вызовом.
Как объединить массивы с заменой значений по ключу?
Функция array_replace() заменяет значения первого массива значениями второго для одинаковых ключей (строковых и числовых). Если ключ есть только во втором массиве, он добавляется. Не переиндексирует числовые ключи.
$first = [0 => 'apple', 1 => 'banana'];
$second = [0 => 'cherry', 2 => 'date'];
$result = array_replace($first, $second);
print_r($result);
Php new array (создание массива в php)
Array
(
[0] => cherry
[1] => banana
[2] => date
)
Php массивы получить первый элемент (получение первых элементов массива в php)
Нюанс: array_replace не рекурсивная. Для вложенных массивов используйте array_replace_recursive().
Как объединить массивы с помощью spread-оператора? (PHP 7.4+)
Spread-оператор (...) распаковывает массивы внутри литерала нового массива. Поведение как у array_merge для строковых ключей (перезапись) и числовых (переиндексация). Подходит для объединения двух и более массивов.
$first = ['a' => 1, 'b' => 2];
$second = ['b' => 3, 'c' => 4];
$result = [...$first, ...$second];
print_r($result);
Php между значениями (выборка значений массива в диапазоне php)
Array
(
[a] => 1
[b] => 3
[c] => 4
)
Php значения ассоциативного массива (получение значений из ассоциативного массива php)
Проблема: spread-оператор не работает с массивами, имеющими строковые ключи, если эти ключи совпадают - последнее значение перезаписывает предыдущее, как и array_merge. Для сохранения всех значений используйте array_merge_recursive().
Как объединить массивы в цикле с произвольной логикой?
Если нужно выполнить объединение с дополнительными условиями (фильтрация, преобразование), удобно использовать цикл foreach.
$first = ['a' => 1, 'b' => 2];
$second = ['b' => 3, 'c' => 4];
$result = $first;
foreach ($second as $key => $value) {
$result[$key] = $value;
}
print_r($result);
Php найти значение в массиве (поиск значения в массиве php)
Array
(
[a] => 1
[b] => 3
[c] => 4
)
Php объединить два массива (объединение двух массивов в php)
Риски: если в $first уже есть числовые ключи, они могут быть случайно перезаписаны. Для сохранения числовых ключей используйте array_values после объединения или проверяйте существование ключа с array_key_exists.
Как добавить элементы одного массива в конец другого без ключей?
Функция array_push() добавляет каждое значение второго массива как новый элемент с числовым ключом. Если нужно получить плоский список, это удобно.
$first = [1, 2];
$second = [3, 4];
array_push($first, ...$second);
print_r($first);
массив содержит php (php проверка наличия элемента в массиве)
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
)
Ограничение: array_push изменяет исходный массив, а не создаёт новый. Для ассоциативных массивов не подходит, так как присваивает только числовые ключи.
Расширенные примеры объединения массивов
Пример 1: объединение массивов с частичным перекрытием числовых ключей с помощью оператора +
$arr1 = [0 => 'zero', 1 => 'one', 2 => 'two'];
$arr2 = [1 => 'ONE', 3 => 'three'];
$result = $arr1 + $arr2;
print_r($result);
Array
(
[0] => zero
[1] => one
[2] => two
[3] => three
)
Ключ 1 остался из первого массива, 3 добавлен из второго.
Пример 2: рекурсивное объединение многомерных массивов с помощью array_merge_recursive
$config1 = ['database' => ['host' => 'localhost', 'port' => 3306]];
$config2 = ['database' => ['user' => 'root', 'port' => 3307]];
$config = array_merge_recursive($config1, $config2);
print_r($config);
Array
(
[database] => Array
(
[host] => localhost
[port] => Array
(
[0] => 3306
[1] => 3307
)
[user] => root
)
)
Значение 'port' стало массивом, так как оба массива содержали этот ключ.
Пример 3: объединение трёх массивов spread-оператором
$a = ['x' => 1];
$b = ['y' => 2];
$c = ['z' => 3];
$result = [...$a, ...$b, ...$c];
print_r($result);
Array
(
[x] => 1
[y] => 2
[z] => 3
)
Пример 4: объединение массивов с сохранением ассоциативных ключей и переиндексацией числовых
$first = ['a' => 1, 2 => 'num'];
$second = ['b' => 2, 3 => 'another'];
$result = array_merge($first, $second);
print_r($result);
Array
(
[a] => 1
[0] => num
[b] => 2
[1] => another
)
Числовой ключ 2 превратился в 0, а 3 в 1.
Пример 5: использование array_replace для обновления значений по числовым ключам
$base = ['red', 'green', 'blue'];
$update = [1 => 'yellow', 4 => 'purple'];
$result = array_replace($base, $update);
print_r($result);
Array
(
[0] => red
[1] => yellow
[2] => blue
[4] => purple
)
Элемент с ключом 1 заменён, ключ 4 добавлен.
Пример 6: объединение с проверкой дубликатов в цикле foreach
$first = ['a' => 10, 'b' => 20];
$second = ['b' => 30, 'c' => 40];
$result = $first;
foreach ($second as $key => $value) {
if (array_key_exists($key, $result)) {
$result[$key] = [$result[$key], $value];
} else {
$result[$key] = $value;
}
}
print_r($result);
Array
(
[a] => 10
[b] => Array
(
[0] => 20
[1] => 30
)
[c] => 40
)
При совпадении ключа создаётся массив из обоих значений.
Пример 7: объединение массивов с числовыми ключами без переиндексации с помощью +
$arr1 = [100 => 'a', 200 => 'b'];
$arr2 = [150 => 'c', 200 => 'd'];
$result = $arr1 + $arr2;
print_r($result);
Array
(
[100] => a
[200] => b
[150] => c
)
Ключ 200 остался из первого массива.
Пример 8: объединение массивов с помощью array_push и array_values для сброса ключей
$first = ['x' => 1, 'y' => 2];
$second = ['z' => 3];
$merged = array_values($first) + array_values($second);
// или через array_push
$result = [];
array_push($result, ...array_values($first), ...array_values($second));
print_r($result);
Array
(
[0] => 1
[1] => 2
[2] => 3
)