<?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));
preferences:
23.47 ms | 407 KiB | 5 Q