我有这个数组:
Array
(
[0] => 2012-08-21
[1] => 2012-08-22
[2] => 2012-08-23
[3] => 2012-08-24
[4] => 2012-08-25
[5] => 2012-08-26
[6] => 2012-08-27
[7] => 2012-08-28
[8] => 2012-08-29
[9] => 2012-08-30
)
要创建此数组,我正在使用它:
function getAllDatesBetweenTwoDates($strDateFrom,$strDateTo)
{
$aryRange=array();
$iDateFrom=mktime(1,0,0,substr($strDateFrom,5,2), substr($strDateFrom,8,2),substr($strDateFrom,0,4));
$iDateTo=mktime(1,0,0,substr($strDateTo,5,2), substr($strDateTo,8,2),substr($strDateTo,0,4));
if ($iDateTo>=$iDateFrom)
{
array_push($aryRange,date('Y-m-d',$iDateFrom)); // first entry
while ($iDateFrom<$iDateTo)
{
$iDateFrom+=86400; // add 24 hours
array_push($aryRange,date('Y-m-d',$iDateFrom));
}
}
return $aryRange;
}
$fromDate = '2012-08-21';
$toDate = '2012-08-30';
$dateArray = getAllDatesBetweenTwoDates($fromDate, $toDate);
for($i=0, $count = count($dateArray);$i<$count;$i++) {
echo $dateArray[$i] . " - " . $dateArray[$i++] . "<br>";
}
但这会跳过第二个日期并且只显示彼此相邻的相同日期,但我最终希望将这些数组放在查询中以获取两个日期之间的数据。
目前返回:
2012-08-21 - 2012-08-21
2012-08-23 - 2012-08-23
2012-08-25 - 2012-08-25
2012-08-27 - 2012-08-27
2012-08-29 - 2012-08-29
但我希望它能够回归:
2012-08-21 - 2012-08-22
2012-08-22 - 2012-08-23
2012-08-23 - 2012-08-24
2012-08-24 - 2012-08-25
2012-08-25 - 2012-08-26
2012-08-26 - 2012-08-27
2012-08-27 - 2012-08-28
2012-08-28 - 2012-08-29
2012-08-29 - 2012-08-30
2012-08-30 - 2012-08-30
我怎样才能做到这一点?
答案 0 :(得分:2)
你增加i
两次,这就是问题所在。您必须在$i+1
次迭代中使用i++
而不是for
:
for($i=0, $count = count($dateArray);$i<$count;$i++) {
echo $dateArray[$i] . " - " . $dateArray[$i+1] . "<br>";
}
答案 1 :(得分:1)
问题不在于函数本身,而是在打印它的方式(双倍增量)。试试这个循环:
for($i=0; $i<count($dateArray)-1;$i++) {
echo $dateArray[$i] . " - " . $dateArray[$i+1] . "<br>";
}