3v4l.org

run code in 300+ PHP versions simultaneously
<?php $newArr = array ( 100 => array ( 1 => array ( 'AVA_Date' => '2019-04-18', 'ROO_Id' => 100, 'RAT_Id' => 9 ), 2 => array ( 'AVA_Date' => '2019-04-20', 'ROO_Id' => 100, 'RAT_Id' => 10 ), 4 => array ( 'AVA_Date' => '2019-04-21', 'ROO_Id' => 100, 'RAT_Id' => 10 ), 7 => array ( 'AVA_Date' => '2019-04-22', 'ROO_Id' => 100, 'RAT_Id' => 9 ) ) ); foreach ($newArr as $key => $array) { $newArrOtherRooms[$key] = array_reduce($array, function($acc, $val) { $room = array_keys(array_column($acc, 'ROO_Id'), $val['ROO_Id']); $rate = array_keys(array_column($acc, 'RAT_Id'), $val['RAT_Id']); $common = array_intersect($room, $rate); if(!empty($common)) { array_push($acc[current($common)]['AVA_Date'], $val['AVA_Date']); } else { $new_arr = $val; $new_arr['AVA_Date'] = [$val['AVA_Date']]; array_push($acc, $new_arr); } return $acc; },[]); } print_r($newArrOtherRooms);
Output for 7.1.0 - 7.1.33, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.29, 8.2.0 - 8.2.20, 8.3.0 - 8.3.8
Array ( [100] => Array ( [0] => Array ( [AVA_Date] => Array ( [0] => 2019-04-18 [1] => 2019-04-22 ) [ROO_Id] => 100 [RAT_Id] => 9 ) [1] => Array ( [AVA_Date] => Array ( [0] => 2019-04-20 [1] => 2019-04-21 ) [ROO_Id] => 100 [RAT_Id] => 10 ) ) )

preferences:
190.42 ms | 404 KiB | 216 Q