我正在编写一个PHP脚本,其输入为:
From date
To date
然后,我想要获取该日期范围并创建一个具有以下类型的数组:
Array(date,x)
当我将每个日期添加到数组时,我将计算随之而来的值。
使用.NET我会(在我的脑海中)使用一个字典,其中日期是关键,x是值。
主要任务是获取该日期范围,然后将该范围拆分为某种数组或字典(在php中理想的是什么)
当我将它添加到数组中时,我将运行一些其他已编写的代码,用于计算该日期的值
最后,当它被添加到那里时,我需要遍历数组或列表并将所有x值加在一起。
答案 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);