2014-10-03 73 views
0

我有这样的阵列:显示器2数组值()循环 - PHP

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 

我怎样才能做到这一点?

回答

2

您增加了两次i,这是问题所在。你必须使用$i+1,而不是i++for迭代:

for($i=0, $count = count($dateArray);$i<$count;$i++) { 
echo $dateArray[$i] . " - " . $dateArray[$i+1] . "<br>"; 
} 
1

的问题是不是在功能本身,它在你打印(双增量)的方式。试试这个循环:

for($i=0; $i<count($dateArray)-1;$i++) { 
    echo $dateArray[$i] . " - " . $dateArray[$i+1] . "<br>"; 
}