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);
文章来源: PHP 生成日期 区间

人吐槽 人点赞

猜你喜欢

发表评论

用户名: 密码:
验证码: 匿名发表

你可以使用这些语言

查看评论:PHP 生成日期 区间