Есть несколько способов объединить массивы в php. Основные функции array_merge() и array_merge_recursive() работают со сложными массивами. Метод implode() обрабатывает многомерные массивы. Есть способ конкатенирования элементов массивов и объединение элементов одного массива в строку.
Функция array_merge()
С помощью этой функции в php объединяют массивы в новый отдельный массив. Элементы второго массива становятся в конец первого. Если в обрабатываемых массивах есть одинаковые ключи, объединение будет происходить следующим образом. Если ключами являются строковые элементы, происходит замена элементов, а каждое последующее значение заменяет предыдущее.
Если элементы с одним ключом являются числовыми, то каждый элемент будет добавляться в конец массива. В результате значения будут отсортированы по ключам в возрастающем порядке.
Элементы в новом массиве выстраиваются таким образом, что нулевым элементом будет значение с ключом color, затем числа 2 и 4, после них a, b. Вслед за ними shape => trapezoid и 4. Следует обратить внимание на элементы с общим ключом. В данном случае остается green.
Выполнение:
Array
(
[color] => green
[0] => 2
[1] => 4
[2] => a
[3] => b
[shape] => trapezoid
[4] => 4
)
Второй пример, как объединить массивы в php.
Здесь сохраняются все элементы, кроме тех, которые имеют общий ключ 3. В этом случае остается значение первого массива. Результат:
array(5) {
[0]=>
string(6) "zero_a"
[2]=>
string(5) "two_a"
[3]=>
string(7) "three_a"
[1]=>
string(5) "one_b"
[4]=>
string(6) "four_b"
}
array_merge_recursive()
Функция array_merge_recursive()
С помощью этой функции можно рекурсивно объединить массивы в php. Значения одного массива переходят в конец другого. Присоединение происходит так же, как и в ходе работы функции array_merge(). Основное отличие, что учитываются абсолютно все значения, в том числе вложенных многомерных массивов.
В данном случае элементы массивов со строковыми ключами объединяются. При этом следующие элементы, которые имеют общий строковый ключ favorite, также объединяются. Числа 5, 10 последовательно добавляются в новый массив. Элемент color => array(...) становится в начало полученного массива, затем идет 5 и 10. При этом значение blue убирается, остается red и green. Результат:
Array
(
[color] => Array
(
[favorite] => Array
(
[0] => red
[1] => green
)
[0] => blue
)
[0] => 5
[1] => 10
)
Функция implode()
Чтобы объединить массив в php в строку, используется метод implode(). Полный синтаксис:
string implode ( string $glue , array $pieces )
Строка $glue по умолчанию пустая, она не является обязательной. Массив $pieces представляет собой элементы, которые в итоге будут объединены. В результате возвращается строка с элементами массива, между которыми находится разделитель $glue. Таким образом:
$pieces[0] . $glue . $pieces[1] . $glue . $pieces[2]
Условно можно назвать функцию implode() противоположной к explode(), которая разбивает строку на элементы и перемещает их в массив.
Здесь элементы массива 'имя', 'почта' и 'телефон' будут объединены в строку $comma_separated. В качестве разделителя между элементами используется ",". Таким образом в результате получается строка “имя,почта,телефон”.
Итог
Три способа объединить два массива в php - это:
- array_merge();
- array_merge_recursive();
- implode().
Отличие второго метода от первого в том, что объединение происходит рекурсивно. То есть при объединении многомерных массивов, элементы каждого вложенного массива будут присоединяться друг к другу. В результате в обоих случаях образовывается новый массив, состоящий из элементов двух обрабатываемых. В процессе выполнения проявляются такие особенности, при которых значения одного массива заменяются элементами другого массива. В других случаях возможен вариант, что элементы добавляются просто в конец массива.
Функция implode() объединяет элементы двух массивов в строку. В аргументах можно задать символ, который будет разделять слова.
$arr1 = array('one', two');
$arr2 = array('three',four','five');
foreach($arr2 as $key => $a) {
$arr1[] = $a;
}