2014-10-03 2 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>"; 
} 
Смежные вопросы