Все способы как объединить массивы в php

Есть несколько способов объединить массивы в 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;
}
не красиво :-/