<?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