Как объединить многомерные массивы, где затронуты только подмассивы?

Вот: Преобразование значений массива в элементах подмассива с использованием PHP Я спросил точно так же, но массивы были более плоскими. Я пытался адаптировать код, но, к сожалению, безуспешно.

Как можно объединить следующие массивы, чтобы второй массив не был добавлен после конца первого массива, но каждый подмассив первого массива получит соответствующие значения подмассивов второго. Другими словами, я хочу объединить подмассивы. Вот мой пример:

Массив 01:

Array01 (

[0] => Array
(
[0] => 40292633
[1] => 412
)

[1] => Array
(
[0] => 41785603
[1] => 382
)

[2] => Array
(
[0] => 48792980
[1] => 373
)

[3] => Array
(
[0] => 44741143
[1] => 329
))

Массив 02:

Array02(

[0] => Array
(
[0] => 3460581
[1] => 1407424B1
[2] => 951753
)

[1] => Array
(
[0] => 3484251
[1] => 1028325B1
[2] => 159357
)

[2] => Array
(
[0] => 3519102
[1] => 0586365A1
[2] => 456654
)

[3] => Array
(
[0] => 3529714
[1] => 1059876A1
[2] => 852258
))

Конечный массив:

finalArray(

[0] => Array
(
[0] => 40292633
[1] => 412
[2] => 3460581
[3] => 1407424B1
[4] => 951753
)

[1] => Array
(
[0] => 41785603
[1] => 382
[2] => 3484251
[3] => 1028325B1
[4] => 159357
)

[2] => Array
(
[0] => 48792980
[1] => 373
[2] => 3519102
[3] => 0586365A1
[4] => 456654
)

[3] => Array
(
[0] => 44741143
[1] => 329
[2] => 3529714
[3] => 1059876A1
[4] => 852258
))

Спасибо заранее!

0

Решение

попробуй этот код

function merge_arrays($a1, $a2) {

return array($a1, $a2);
}

$result = array_map("merge_arrays", $a1, $a2);
foreach($result as $nr)
{
$nres[] = array_merge ($nr[0], $nr[1]);
}
4

Другие решения

Попробуй это:

$result = array();
$keys = array_unique( array_merge(array_keys($arr1), array_keys($arr2)) );
foreach($keys as $key) {
if( !array_key_exists($key, $arr1) ) {
$result[$key] = $arr2;
} else if( !array_key_exists($key, $arr2) ) {
$result[$key] = $arr1;
} else {
$result[$key] = array_merge($arr1[$key], $arr2[$key]);
}
}

Он не предполагает, что оба массива имеют одинаковые ключи.

Если вы хотите использовать array_map, это эквивалентное решение:

$keys = array_unique( array_merge(array_keys($arr1), array_keys($arr2)) );
$result = array_map(function($key) use ($arr1,$arr2) {
if( !array_key_exists($key, $arr1) ) {
return $arr2;
} else if( !array_key_exists($key, $arr2) ) {
return $arr1;
}
return array_merge($arr1[$key], $arr2[$key]);
},
$keys);

Если вы уверены, что оба массива имеют одинаковые ключи, вы можете попробовать это:

$result = array();
foreach($arr1 as $key => $arr1val) {
$result[$key] = array_merge($arr1val, $arr2[$key]);
}
0