Php 如何使用相同的键将值从一个数组添加到另一个数组?
我有两个阵列:Php 如何使用相同的键将值从一个数组添加到另一个数组?,php,arrays,Php,Arrays,我有两个阵列: $arr1 = [ [ 'id' => 1, 'name' => 'John', 'email' => 'j@mail.com' ], [ 'id' => 2, 'name' => 'Jane', 'email' => 'jane@mail.com' ] ]; 第二个数组: $arr2 = [ [
$arr1 = [
[
'id' => 1,
'name' => 'John',
'email' => 'j@mail.com'
],
[
'id' => 2,
'name' => 'Jane',
'email' => 'jane@mail.com'
]
];
第二个数组:
$arr2 = [
[
'id' => 1,
'email' => 'john@yahoo.com'
],
[
'id' => 2,
'email' => 'jane@yahoo.com'
],
[
'id' => 2,
'email' => 'jane.doe@hotmail.com'
],
];
我想将第二个数组中具有相同“id”的所有值添加到第一个数组中。我预期的结果是:
$arr3 = [
[
'id' => 1,
'name' => 'John',
'email' => ['j@mail.com', 'john@yahoo.com']
],
[
'id' => 2,
'name' => 'Jane',
'email' => ['jane@mail.com', 'jane@yahoo.com', 'jane.doe@hotmail.com']
]
];
此代码将执行您想要的操作。它遍历
$arr2
的所有条目,在$arr1
中查找匹配的id
值,并在找到这些值的地方,将$arr2
中的电子邮件地址添加到$arr1
中的电子邮件列表中,以查找该id
值:
foreach ($arr2 as $arr) {
if (($k = array_search($arr['id'], array_column($arr1, 'id'))) !== false) {
if (is_array($arr1[$k]['email'])) {
$arr1[$k]['email'][] = $arr['email'];
}
else {
$arr1[$k]['email'] = array($arr1[$k]['email'], $arr['email']);
}
}
}
输出:
Array (
[0] => Array (
[id] => 1
[name] => John
[email] => Array (
[0] => j@mail.com
[1] => john@yahoo.com
)
)
[1] => Array (
[id] => 2
[name] => Jane
[email] => Array (
[0] => jane@mail.com
[1] => jane@yahoo.com
[2] => jane.doe@hotmail.com
)
)
)
如果将第一个数组设置为键为ID的关联数组,则会更容易。然后你可以循环第二个数组,找到第一个数组的对应元素,并将电子邮件添加到其中。至少我们可以要求OP付出努力。