I am comparing 2 arrays but after applying array_diff it returns the result in the object form. Have a look at the below code and result
<?php
$schedule = ['Monday'=>['12:00','01:20'],'Tuesday'=>['04:00','12:00','20:00']];
$booked_slots = ['Monday'=>['12:00'],'Tuesday'=>['20:00']];
$diff = [];
foreach ($schedule as $day => $times) {
$day_wise_slots = isset($booked_slots[$day]) ? $booked_slots[$day] : [];
$diff[$day] = array_diff($times, $day_wise_slots);
}
echo json_encode($diff);
?>
Result : {"Monday":{"1":"01:20"},"Tuesday":["04:00","12:00"]}
Desired Output: {"Monday":["01:20"],"Tuesday":["04:00","12:00"]}
array_diff
perserves keys of original array. You need to reinitialize array to not have array keys in json. You can use array_values
to get a reinitialized array keys
<?php
$schedule = ['Monday'=>['12:00','01:20'],'Tuesday'=>['04:00','12:00','20:00']];
$booked_slots = ['Monday'=>['12:00'],'Tuesday'=>['20:00']];
$diff = [];
foreach ($schedule as $day => $times) {
$day_wise_slots = isset($booked_slots[$day]) ? $booked_slots[$day] : [];
$diff[$day] = array_values(array_diff($times, $day_wise_slots));
}
echo json_encode($diff);
?>