如何使用 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);
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);