在PHP中创建(日期,值)的数组/集合/列表

时间:2011-02-04 11:45:03

标签: php arrays datetime date dictionary

我正在编写一个PHP脚本,其输入为:

From date
To date

然后,我想要获取该日期范围并创建一个具有以下类型的数组:

Array(date,x)

当我将每个日期添加到数组时,我将计算随之而来的值。

使用.NET我会(在我的脑海中)使用一个字典,其中日期是关键,x是值。

主要任务是获取该日期范围,然后将该范围拆分为某种数组或字典(在php中理想的是什么)

当我将它添加到数组中时,我将运行一些其他已编写的代码,用于计算该日期的值

最后,当它被添加到那里时,我需要遍历数组或列表并将所有x值加在一起。

3 个答案:

答案 0 :(得分:6)

(未测试的)

function dateArray($from, $to, $value = NULL) {
    $begin = new DateTime($from);
    $end = new DateTime($to);
    $interval = DateInterval::createFromDateString('1 day');
    $days = new DatePeriod($begin, $interval, $end);

    $baseArray = array();
    foreach ($days as $day) {
        $dateKey = $day->format("Y-m-d");
        $baseArray[$dateKey] = $value;
    }

    return $baseArray;
}

$datesArray = dateArray('2011-01-01', '2011-03-31',true);

答案 1 :(得分:1)

如果我理解正确,你可以使用一个关联数组:

array(
  '00-00-00' => $value,
  '01-01-01' => $value,
  // etc...
);

或者您可以像这样创建它:

$myArray = array();
$myArray['00-00-00'] = $value;
$myArray['01-01-01'] = $value;

你可以通过运行循环填充它们......

答案 2 :(得分:1)

你可以试试这个

function makeDateRange($from,$to,$pattern='m-d-y')
{
    $day = date( $pattern , $from );
    $to = date( $pattern , $to );
    $parseDate = date_parse($from);
    while( $day <= $to ) {
        $day = mktime(0,0,0,$parseDate["month"],$parseDate["day"]+1,$parseDate["year"]);
        $dateArray[] = date($pattern , $day);
        }
    return $dateArray;
}

// here make array $keys = makeDateRange("12-01-11","12-02-11");

//here make above array as key in $a array $a = array_fill_keys($keys, 'none'); print_r($a);