PHP 生成日期 区间

/**
 * @param string $hisStart
 * @param string $hisEnd
 * @param int    $range
 *
 * @return array
 */
function createHisRange($hisStart = '00:00:00', $hisEnd = '23:59:59', $range = 3600)
{
    return array_map(function ($time) {
        return date('H:00:00', $time);
    }, range(strtotime($hisStart), strtotime($hisEnd), $range));
}


/**
 * @param      $ymdStart
 * @param bool $ymdEnd
 * @param int  $range
 *
 * @return array
 */
function createYmdRange($ymdStart, $ymdEnd = true, $range = 86400)
{
    if ($ymdEnd === true) $ymdEnd = date('Y-m-d');

    return array_map(function ($time) {
        return date('Y-m-d', $time);
    }, range(strtotime($ymdStart), strtotime($ymdEnd), $range));
}

/**
 * @description 值转换为键名
 *
 * @param $array
 * @param $keyName
 *
 * @return array
 */
function arrVal2Key($array, $keyName)
{
    $arr2 = array();
    foreach ($array as $arr) {
        $arr2[$arr[$keyName]] = $arr;
    }

    return $arr2;
}

$arrRes = array(
    array(
        'dt' => '2014-10-22',
        'v1' => 30,
        'v2' => 40,
        'v3' => 45,
    ),
    array(
        'dt' => '2014-10-25',
        'v1' => 30,
        'v2' => 44,
    ),
    array(
        'dt' => '2014-10-26',
        'v1' => 3,
        'v3' => 2,
    )
);


//var_dump($arr);

//--------------------START----------------------
$arrDate = createYmdRange('2014-10-22', '2014-10-28');
$arrRes = arrVal2Key($arrRes, 'dt');

foreach ($arrDate as $key) {
    if (empty($arrRes[$key])) {
        $arrRes[$key] = array(
            'dt' => $key,
            'v1' => 0,
            'v2' => 0,
            'v3' => 0,
        );
    }
}
ksort($arrRes);
//----------------------END----------------------

var_dump($arrRes);


//$arrDate = array_combine($arrDate, array_map(function ($v) {
//    return array();
//}, $arrDate));
//$arr = array_merge_recursive($arr, $arrDate);
//var_dump($arr);
//$arr =  array_merge_recursive();
//var_dump($arrDate);

//$arr = createHisRange('01:00:00', '24:00:00', 2600);
//$arr = createHisRange();
//$arr = createYmdRange('2014-09-25','2014-11-23');
//var_dump($arr);
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值