3v4l.org

run code in 300+ PHP versions simultaneously
<?php $existingtArr = [ "A" => [ "color" => 'red', "user" => [ "Daniel" => ["01:18:08", "04:10:12"], "Max" => ["01:04:00"], "Serto" => ["02:00:02"], ] ], "B" => [ "color" => 'blue', "user" => [ "Franz" => ["08:40:52"], "Hugo" => ["07:08:58"], ] ] ]; $newArr = [ "A" => [ "color" => 'red', "user" => [ "Fabian" => ["06:03:00"], // + 1 user "Max" => ["04:10:12"], // + 1 new time "Serto" => ["02:00:02"], ] ], "B" => [ "color" => 'blue', "user" => [ "Franz" => ["08:40:52", "14:05:32", "20:34:15"], // an older one is available, + 2 new times "Hugo" => ["04:10:12"], // + 1 time ] ], "C" => [ // + new whole group "color" => 'green', "user" => [ "Maxi" => ["07:08:58", "04:10:12"], ] ] ]; foreach ($newArr as $letter => $set) { if (!isset($existingtArr[$letter])) { $existingtArr[$letter] = $set; } else { $existingtArr[$letter]['user'] = array_merge_recursive( $existingtArr[$letter]['user'], $set['user'] ); } } var_export($existingtArr);
Output for 8.0.1 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.6
array ( 'A' => array ( 'color' => 'red', 'user' => array ( 'Daniel' => array ( 0 => '01:18:08', 1 => '04:10:12', ), 'Max' => array ( 0 => '01:04:00', 1 => '04:10:12', ), 'Serto' => array ( 0 => '02:00:02', 1 => '02:00:02', ), 'Fabian' => array ( 0 => '06:03:00', ), ), ), 'B' => array ( 'color' => 'blue', 'user' => array ( 'Franz' => array ( 0 => '08:40:52', 1 => '08:40:52', 2 => '14:05:32', 3 => '20:34:15', ), 'Hugo' => array ( 0 => '07:08:58', 1 => '04:10:12', ), ), ), 'C' => array ( 'color' => 'green', 'user' => array ( 'Maxi' => array ( 0 => '07:08:58', 1 => '04:10:12', ), ), ), )

preferences:
123.64 ms | 404 KiB | 89 Q