使用 array_diff 后以对象形式获得答案

Getting answer in object form after using array_diff

我正在比较 2 个数组,但在应用 array_diff 之后 returns 对象形式的结果。 看看下面的代码和结果

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

结果:{"星期一":{"1":"01:20"},"星期二":["04:00","12:00"]}

所需输出:{“星期一”:[“01:20”],“星期二”:[“04:00”,“12:00”]}

array_diff 保留原始数组的键。您需要重新初始化数组以使 json 中没有数组键。您可以使用 array_values 来获取重新初始化的数组键

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