如何使用具有匹配值的不同键合并两个多维数组?
即。我想要arrayOne中的数据,'Member'=> '45',与arrayTwo中的数据合并,'id'=> '45'。
我无权访问查询,只访问结果数组。
First Array:
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',
),
)
Desired Array将是这样的:
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 :(得分: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);
这是working demo。