php怎么将序列化数组内的日期 填补不存在的日期

查看:93
本文介绍了php怎么将序列化数组内的日期 填补不存在的日期的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

从数据库查询的时间是不连续的 如

前端的图表需要连续的日期 但是数据库中 不存在不存在连续的时间
php需要处理为一个月内连续的时间 如:
[2017.08.25,2017.08.26,2017.08.27,2017.08.28]
[4,-,5,6,7,8]
将data替换为-即可 不知道怎么处理 求各位大神 支招

解决方案

<?php

$data = array(
    'date' => array(
        '2017.08.24',
        '2017.08.26',
        '2017.08.28',
        '2017.08.30',
        '2017.08.31'
    ),
    'data' => array(
        1,
        2,
        3,
        4,
        5
    )
);

$len = count($data['date']);

$oneDaySecond = 86400;

$newData = array();

for ($i = 1; $i < $len; $i++) {
    $previous = strtotime(str_replace('.', '-', $data['date'][($i - 1)]));
    $current = strtotime(str_replace('.', '-', $data['date'][($i)]));

    $diff = $current - $previous;

    if (!in_array($data['date'][($i - 1)], $newData['date'], true)) {
        $newData['date'][] = $data['date'][($i - 1)];
        $newData['data'][] = $data['data'][($i - 1)];
    }

    if ($diff > $oneDaySecond) {
        for ($m = $previous + $oneDaySecond; $m < $current; $m += $oneDaySecond) {
            $newData['date'][] = date('Y.m.d', $m);
            $newData['data'][] = 0;
        }
    }

    $newData['date'][] = $data['date'][$i];
    $newData['data'][] = $data['data'][$i];
}

print_r($newData);

result

Array
(
    [date] => Array
        (
            [0] => 2017.08.24
            [1] => 2017.08.25
            [2] => 2017.08.26
            [3] => 2017.08.27
            [4] => 2017.08.28
            [5] => 2017.08.29
            [6] => 2017.08.30
            [7] => 2017.08.31
        )

    [data] => Array
        (
            [0] => 1
            [1] => 0
            [2] => 2
            [3] => 0
            [4] => 3
            [5] => 0
            [6] => 4
            [7] => 5
        )

)

这篇关于php怎么将序列化数组内的日期 填补不存在的日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆