从现在开始添加缺失日期1周

时间:2013-11-28 13:38:31

标签: php arrays

我想从现在开始将缺少的日期添加到此数组1周。

这是我的一个示例数组;

Array
(
    [0] => Array
        (
            [date] => 2013-11-25
            [members] => 2
        )

    [1] => Array
        (
            [date] => 2013-11-27
            [members] => 1
        )

)

这可能有任何日期。我尝试了这样的事情,但我可以逻辑地看到它不起作用,但我无法找到方法。

$date_range = array();
            $temp = array();
           for ($i=0; $i<7; $i++)
            {
              $date = date("Y-m-d", strtotime($i." days ago"));

              foreach($new_members as $members) {  

                if(!in_array($date, $members)) {

                $temp['date'] = $date;

                $temp['members'] = 0;

                $new_members[] = array_merge($temp);

              }

              }


            }

2 个答案:

答案 0 :(得分:1)

Dainis提供的解决方案对我不起作用,它会弄乱成员和日期。

这是我的解决方案:

<?php

$new_members = array ( array("date"=>"2013-11-25", "members" => 2), array("date"=>"2013-11-27", "members" => 2));
for ($i=0; $i<7; $i++)
{
    $date = date("Y-m-d", strtotime($i." days ago"));
    $found = false;
    foreach($new_members as $members) {
        if(array_search($date, $members) !== false) {
            $found = true;
        }
    }
    if(!$found) {
        $new_members[] = array ("date" => $date, "members" => 0);
    }
}

foreach($new_members as $nm) {
    var_dump($nm);
}

?>

答案 1 :(得分:0)

而不是:

$temp['date'] = $date;
$temp['members'] = 0;
$new_members[] = array_merge($temp);

就这样做:

$new_members[$i]['date'] = $date;
if ( !$new_members[$i]['members'] ) $new_members[$i]['members'] = 0;

之后,您可以在['date']值之后对其进行排序,并获得漂亮的数组。