3v4l.org

run code in 300+ PHP versions simultaneously
<?php $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' ], ]; foreach ($arr2 as ['id' => $id, 'email' => $lookup[$id][]]); foreach ($arr1 as ['id' => $id, 'email' => &$email]) { $email = array_merge((array) $email, $lookup[$id] ?? []); } var_export($arr1);
Output for 7.4.33, 8.0.1 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.27, 8.4.1 - 8.4.14
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', ), ), )

preferences:
98.84 ms | 407 KiB | 5 Q