<?php
$arr1 = [
['email' => 'aa@gmail.com', 'name' => 'John Doe'],
['email' => 'bb@gmail.com', 'name' => 'Johnny Sins'],
['email' => 'cc@gmail.com', 'name' => 'Jose Alvarado']
];
$arr2 = [
['email' => 'cc@gmail.com', 'country' => 'Japan'],
['email' => 'cc@gmail.com', 'country' => 'China'],
['email' => 'bb@gmail.com', 'country' => 'Korea'],
];
$result = array_column($arr1, null, 'email');
$counts = array_count_values(array_column($arr2, 'email'));
foreach ($arr2 as $row) {
if ($counts[$row['email']] > 1) {
unset($result[$row['email']]);
} else {
$result[$row['email']] += $row;
}
}
var_export(array_values($result));
- Output for 8.0.1 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.26, 8.4.1 - 8.4.13
- array (
0 =>
array (
'email' => 'aa@gmail.com',
'name' => 'John Doe',
),
1 =>
array (
'email' => 'bb@gmail.com',
'name' => 'Johnny Sins',
'country' => 'Korea',
),
)
preferences:
95.15 ms | 407 KiB | 5 Q