3v4l.org

run code in 300+ PHP versions simultaneously
<?php $arr1 = [ ['email' => 'aa@gmail.com', 'name' => 'John Doe'], ['email' => 'bb@gmail.com', 'name' => 'Johnny Sins'], ['email' => 'cc@gmail.com', 'name' => 'Jose Alvarado'], ['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'], ]; function sanitizeAndKey($array) { $found = []; $clean = []; foreach ($array as $row) { if (isset($found[$row['email']])) { unset($clean[$row['email']]); } else { $found[$row['email']] = $row; $clean[$row['email']] = $row; } } return $clean; } $result = sanitizeAndKey($arr1); foreach (sanitizeAndKey($arr2) as $key => $row) { $result[$key] = ($result[$key] ?? []) + $row; // append arr2 data to arr1 data } var_export(array_values($result));

preferences:
22.64 ms | 405 KiB | 5 Q