如何使用 php 合并 json 数据

how to combine json data using php

helo 我有 JSON 数据。我根据月份和年份在助手中制作了它。 这里我做一个考勤数据报表,这是JSON

{
    "data": {
        "user": {
            "id_user": "13",
            "name": "JHON"
        },
        "month": "01",
        "year": "2021",
        "attendace": [
            {
                "date": "01-01-2021",
                "in": "07:24:50",
                "out": "17:03:42"
            },
            {
                "date": "03-01-2021",
                "in": "07:08:50",
                "out": "17:18:50"
            },
            {
                "date": "07-01-2021",
                "in": "07:03:42",
                "out": "18:03:42"
            }
        ],
        "day": [
            {
                "day": "Friday",
                "date": "01-01-2021"
            },
            {
                "day": "Saturday",
                "date": "02-01-2021"
            },
            {
                "day": "Sunday",
                "date": "03-01-2021"
            },
            {
                "day": "Monday",
                "date": "04-01-2021"
            },
            ......
            ...... // to 
            {
                "day": "Sunday",
                "date": "31-01-2021"
            }
        ]
    }
}

问题是如何将 JSON 缺席与 JSON 天结合起来? 我想这样做,如果缺少的数据在日期 5、6、7、8 上是空白的,那么它会自动为 null

我要点赞

 "day": [
            {
                "day": "Friday",
                "date": "01-01-2021" 
                "data" [
                  {
                    "in": "07:03:42",
                    "out": "18:03:42"
                   }
                ]
            },
            {
                "day": "Saturday",
                "date": "02-01-2021"
                "data" [
                  {
                   "in": null,
                   "out": null
                  }
                ]
            },
            {
                "day": "Sunday",
                "date": "03-01-2021"
                "data" [
                  {
                    "in": "07:03:42",
                    "out": "18:03:42"
                   }
                ]
            },
       ]

这是我的代码

pulic function get(){
    $data['user'] = $this->mymodel->find($id_user);
    $data['bulan'] = $bulan;
    $data['tahun'] = $tahun;
    $data['attendance'] = $this->mymodel->get_absen($id_user, $bulan, $tahun);
    $data['day'] = hari_bulan($bulan, $tahun);
    $message = array(
        'status'     => true,
        'data'       => $data
    );
    $this->response($message, REST_Controller::HTTP_OK);
}
$attendace = $data['attendace'];
$days = $data['day'];

$days = array_map(function($day) use ($attendace)  {
    $day['data'] = [];
    foreach ($attendace as $visit) {
        $day_date = new DateTime($day['date']);
        $visit_date = new DateTime($visit['date']);
        $interval = $day_date->diff($visit_date)->format('%d');
        if ($interval == 0) {
            $day['data'][] = [
                'in' => $visit['in'],
                'out'=> $visit['out']
            ];
        }
    }

    if (count($day['data']) === 0)
        $day['data'][] = [
            'in' => null,
            'out' => null
        ];

    return $day;
}, $days);