объединить два многомерных массива по ключу

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

я хочу, чтобы данные в arrayOne, ‘Member’ => ’45’, сливались с данными в arrayTwo, ‘id’ => ’45’.

У меня нет доступа к запросу, только массив результатов.

Первый массив:

arrayOne
array (
558 =>
array (
'id' => '558',
'Member' => '45',
'Status' => 'Active',
),
559 =>
array (
'id' => '559',
'Member' => '46',
'Status' => 'Active',
),
)

Второй массив:

arrayTwo
array (
45 =>
array (
'id' => '45',
'Name' => 'Johnson',
),
46 =>
array (
'id' => '46',
'Name' => 'Smith',
),
)

Желаемый массив будет примерно таким:

arrayThree
array (
45 =>
array (
'id' => '45',
'Name' => 'Johnson',
'Member' => '45',
'Status' => 'Active',
),
46 =>
array (
'id' => '46',
'Name' => 'Smith',
'Member' => '46',
'Status' => 'Active',
),
)

Это код, который я недавно пробовал, который объединяет записи, но не объединяет их по соответствующим значениям. Спасибо за любую помощь!

 function my_array_merge($arrayOne, $arrayTwo) {
$result = arrayThree();
foreach($arrayOne as $key => $value) {
$result[$key] = array_merge($value, $arrayTwo[$key]);
}
return $result;
}

echo "<pre>";
print_r($result);
echo "</pre>";

0

Решение

Ты можешь использовать array_map:

$array1 = array_combine(array_column($array1, 'Member'), $array1);
$result = array_map(function ($item2) use ($array1) {
$item1 = isset($array1[$item2['id']]) ? $array1[$item2['id']] : null;

if ($item2) {
$item2['Member'] = $item1['Member'];
$item2['Status'] = $item1['Status'];
}

return $item2;
}, $array2);

Вот рабочая демо.

0

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

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector