每个循环的日期间隔

时间:2017-03-30 11:14:36

标签: php arrays foreach

我想要的是我在表中有5条记录, 日期 - > 2017-03-12,2017-03-23,2017-03-25,2017-03-28,2017-03-29和他们有价格 - > 10,20,30,40,50。

我想要生成一个报告,其中显示的日期介于12到29之间.12,13,14,15等等到它们的价格,如果这个日期没有可用的价格,它应该采用之前的价格记录。对于前者,对于日期13,14,15,它应该取10的价格,而对于日期24,它应该取20的价格。

关于它的任何想法?

1 个答案:

答案 0 :(得分:0)

你走了。

$dates['2017-03-12'] = 10;
$dates['2017-03-23'] = 20;
$dates['2017-03-25'] = 30;
$dates['2017-03-28'] = 40;
$dates['2017-03-29'] = 50;

$start = min(array_keys($dates));

$end = max(array_keys($dates));


$list = array();
while($start <= $end){

    $value = $dates[$start];

    if(!is_null($value))
        $last_value = $value;   

    $list[] = array("date" => $start,"value" => $last_value);

    $start = date('Y-m-d',strtotime($start."+1day"));

}

print_r($list);

这将打印

Array
(
    [0] => Array
        (
            [date] => 2017-03-12
            [value] => 10
        )

    [1] => Array
        (
            [date] => 2017-03-13
            [value] => 10
        )

    [2] => Array
        (
            [date] => 2017-03-14
            [value] => 10
        )

    [3] => Array
        (
            [date] => 2017-03-15
            [value] => 10
        )

    [4] => Array
        (
            [date] => 2017-03-16
            [value] => 10
        )

    [5] => Array
        (
            [date] => 2017-03-17
            [value] => 10
        )

    [6] => Array
        (
            [date] => 2017-03-18
            [value] => 10
        )

    [7] => Array
        (
            [date] => 2017-03-19
            [value] => 10
        )

    [8] => Array
        (
            [date] => 2017-03-20
            [value] => 10
        )

    [9] => Array
        (
            [date] => 2017-03-21
            [value] => 10
        )

    [10] => Array
        (
            [date] => 2017-03-22
            [value] => 10
        )

    [11] => Array
        (
            [date] => 2017-03-23
            [value] => 20
        )

    [12] => Array
        (
            [date] => 2017-03-24
            [value] => 20
        )

    [13] => Array
        (
            [date] => 2017-03-25
            [value] => 30
        )

    [14] => Array
        (
            [date] => 2017-03-26
            [value] => 30
        )

    [15] => Array
        (
            [date] => 2017-03-27
            [value] => 30
        )

    [16] => Array
        (
            [date] => 2017-03-28
            [value] => 40
        )

    [17] => Array
        (
            [date] => 2017-03-29
            [value] => 50
        )

)