【问题标题】:how to combine json data using php如何使用php组合json数据
【发布时间】:2021-05-17 04:39:15
【问题描述】:

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 day 结合起来? 我想让它像这样,如果缺少的数据在日期 5、6、7、8 为空白,那么它会自动为空

我想要这个

 "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);
}

【问题讨论】:

  • 到目前为止你尝试了什么?

标签: php arrays json codeigniter


【解决方案1】:
$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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-02
    • 1970-01-01
    • 1970-01-01
    • 2013-08-01
    • 2017-02-24
    • 2015-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多