Как объединить два массива в один на PHP (слить элементы массивов)

Нет картинки Слить элементы двух уже сформированных массивов, чтобы получить один общий массив, содержащий элементы из обоих массивов.

1. Пользоваться PHP-функцией array_merge

array array_merge ( array array1, array array2 [, array ...] )

Функция array_merge() сливает элементы двух или большего количества массивов таким образом, что значения одного массива присоединяются к значениям предыдущего. Результатом работы функции является новый массив.

Если входные массивы имеют одинаковые строковые ключи, тогда значения, соответствующие этим ключам, рекурсивно сливаются в один массив, таким образом, если одно из значений является массивом, функция сливает его с соответствующим значением в другом массиве. Однако, если массивы имеют одинаковые числовые ключи, значение, упомянутое последним, не заменит исходное значение, а будет слито с ним.

Пример 1. Пример использования array_merge()

$array1 = array ("color" => "red", 2, 4);
$array2 =array ("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = array_merge ($array1, $array2);
print_r($result);

Результат выполнения данного примера:

Array
(
  [color] => green
  [0] => 2
  [1] => 4
  [2] => a
  [3] => b
  [shape] => trapezoid
  [4] => 4
)

 

2. Просто сложить два массива

Если вы хотите полностью сохранить массивы и просто слить их вместе, используйте оператор +:

$array1 = array();
$array2 = array(1 => "data");
$result = $array1 + $array2;

Числовой ключ будет сохранен, поэтому ассоциация также сохраняется.

Array
(
   [1] => data
)

Следует помнить, что в PHP 5 функция array_merge принимает параметры только типа array.

almix
Разработчик Loco, автор статей по веб-разработке на Yii, CodeIgniter, MODx и прочих инструментах. Создатель Team Sense.

Вы можете почитать все статьи от almix'а.



Другие статьи по этой теме:

Комментарии (1)     Подпишитесь на RSS комментариев к этой статье.

1 комментарий

#644
Рустам говорит:
September 18, 2012 at 06:34 pm

Я обычно в такой ситуации делаю тестовый стенд и проверяю как работает:

$a = array('1' => 1, 'a' => 11, 2 => 111);

$b = array('1' => 2, 'a' => 22, 2 => 222);


var_dump(array_merge($a, $b));
array(5) {
  [0] =>
  int(1)
  'a' =>
  int(22)
  [1] =>
  int(111)
  [2] =>
  int(2)
  [3] =>
  int(222)
}


var_dump($a+$b);
array(3) {
  [1] =>
  int(1)
  'a' =>
  int(11)
  [2] =>
  int(111)
}