定义数组值

时间:2016-05-27 21:34:43

标签: php arrays

这是我的阵列;

$date = array('16-01-14','16-01-28','16-02-14','16-02-28','16-03-14','16-03-28',
    '16-04-14','16-04-28','16-05-14','16-05-28','16-06-14','16-06-28','16-07-14',
    '16-07-28','16-08-14','16-08-28','16-09-14','16-09-28','16-10-14','16-10-28',
    '16-11-14','16-11-28','16-12-14','16-12-28');

我想要实现的是创建一个foreach语句,为下图创建一个类似的输出。

图片示例

enter image description here

示例

因此,对于示例中的每一行,start_dateend_date被定义为变量,我可以参考该变量。模式就像;

01 12 23 34 45 ...

我基本上想要实现的是使用start dateend date对图片中的每一行执行操作,并对每一行重复操作图片。

3 个答案:

答案 0 :(得分:1)

遍历数组,并将每个值作为结束日期回显到开始日期和下一个值。请注意,您需要最后一个开始日期的逻辑 - 它是倒数第二个数组的值吗?如果是这样 - 你需要将计数减少1。

$date = array('16-01-14','16-01-28','16-02-14','16-02-28','16-03-14','16-03-28',
  '16-04-14','16-04-28','16-05-14','16-05-28','16-06-14','16-06-28','16-07-14',
  '16-07-28','16-08-14','16-08-28','16-09-14','16-09-28','16-10-14','16-10-28',
    '16-11-14','16-11-28','16-12-14','16-12-28');

echo "<table>";

for($i=0;$i<count($date)-1;$i++){
   $x=$i+1;
   echo"<tr><td>".$date[$i]."</td><td>".$date[$x]."</td></tr>";
}

echo "</table>";

这就是结果:

Start Date  End Date
16-01-14    16-01-28
16-01-28    16-02-14
16-02-14    16-02-28
16-02-28    16-03-14
16-03-14    16-03-28
16-03-28    16-04-14
16-04-14    16-04-28
16-04-28    16-05-14
16-05-14    16-05-28
16-05-28    16-06-14
16-06-14    16-06-28
16-06-28    16-07-14
16-07-14    16-07-28
16-07-28    16-08-14
16-08-14    16-08-28
16-08-28    16-09-14
16-09-14    16-09-28
16-09-28    16-10-14
16-10-14    16-10-28
16-10-28    16-11-14
16-11-14    16-11-28
16-11-28    16-12-14
16-12-14    16-12-28

答案 1 :(得分:0)

使用array_sliceimplode函数的解决方案:

$i = 0;
$size = count($date);
echo "start_date | end_date" . PHP_EOL;
while ($i < $size) {
    if (isset($date[$i + 1])) {
        echo " " . implode(" : ", array_slice($date, $i, 2)) . PHP_EOL;
    }    
    $i++;
}

输出:

start_date | end_date
 16-01-14 : 16-01-28
 16-01-28 : 16-02-14
 16-02-14 : 16-02-28
 16-02-28 : 16-03-14
 16-03-14 : 16-03-28
 16-03-28 : 16-04-14
 16-04-14 : 16-04-28
 16-04-28 : 16-05-14
 16-05-14 : 16-05-28
 16-05-28 : 16-06-14
 16-06-14 : 16-06-28
 16-06-28 : 16-07-14
 16-07-14 : 16-07-28
 16-07-28 : 16-08-14
 16-08-14 : 16-08-28
 16-08-28 : 16-09-14
 16-09-14 : 16-09-28
 16-09-28 : 16-10-14
 16-10-14 : 16-10-28
 16-10-28 : 16-11-14
 16-11-14 : 16-11-28
 16-11-28 : 16-12-14
 16-12-14 : 16-12-28

答案 2 :(得分:0)

如果您想使用foreach,可以在循环之前关闭第一个数组元素(初始开始日期)。然后在循环时,首先使用当前元素作为结束日期,然后将其设置为下一次迭代(行)的开始日期。

$start_date = array_shift($date); // get the initial start date (and remove it from $date)

echo '<table>';
foreach ($date as $end_date) {
    echo "<tr><td>$start_date</td><td>$end_date</td></tr>";
    $start_date = $end_date;   // end date becomes next row's start date
}
echo '</table>';