在foreach()循环中显示2个数组值 - PHP

时间:2014-10-03 08:45:51

标签: php arrays

我有这个数组:

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 个答案:

答案 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>";
}