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);

preferences:
57.03 ms | 403 KiB | 5 Q