2016-06-29 2 views
-2

У меня есть два многомерных массива в php и вы хотите объединить их.php слияние многомерных массивов друг с другом

Первый один:

array1 = (
    0 => array (
     0 => array(
      id => 1, 
      name => "test" 
     ) 
    ) 
    1 => array(...) 
) 

Второй один:

array2 = (
    0 => array (
     0 => array(
      id => 200, 
      name => "test" 
     ), 
     1 => array(
      id => 201, 
      name => "test" 
     ) 
    ) 
    1 => array(...) 
) 

И объединенный массив должен быть таким:

lastArray = (
    0 => array (
     0 => array(
      id =>1, 
      name => "test" 
     ), 
     1 => array(
      id => 200, 
      name => "test" 
     ), 
     2 => array (
      id => 201, 
      name => "test" 
     ) 
    ) 
    1 => array(...) 
) 

Как это сделать с помощью правильного цикла foreach?

ответ

1

Метод 1:

Почему бы не использовать array_merge или array-merge-recursive для этого? Это будет merge оба (или более) массива.

$array = array_merge($array1, $array2); 

$array = array_merge-recursive($array1, $array2); 

Способ 2:

петли через один массив. (Вы можете проверить, равен ли ключ ключу другого).

Может быть что-то вроде этого:

foreach($array_1 as $key=>$value) $array_2[$key] = $value; 

Reminder от splash58: Не забудьте использовать usort в обоих методов для сортировки массива по значениям после сортировки по идентификатору

+0

Нет! это не так просто. обратите внимание на «lastArray», о котором я упоминал. Я не хочу доводить его до конца первого массива! –

+0

После сортировки по id с функцией usort - http://php.net/manual/en/function.usort.php – splash58

+0

@ splash58 да, пропустил этот момент! – Maurize

1

По lastArray, который вы представили - вам нужно объединить внутренние массивы только по адресу 0 position/index (и вы не показали, как должен выглядеть результат слияния при индексе 1).
Использовать следующий подход:

$array1[0] = array_merge($array1[0], $array2[0]); 
// now, $array1 is your $lastArray 
Смежные вопросы