这是我的阵列;
$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
语句,为下图创建一个类似的输出。
图片示例
示例
因此,对于示例中的每一行,start_date
和end_date
被定义为变量,我可以参考该变量。模式就像;
01 12 23 34 45 ...
我基本上想要实现的是使用start date
和end date
对图片中的每一行执行操作,并对每一行重复操作图片。
答案 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_slice
和implode
函数的解决方案:
$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>';