PHP - 计算数组循环中的行之间的日期(foreach)
问题描述:
我正在搜索如何计算数组循环中的值,这是一个foreach精灵。PHP - 计算数组循环中的行之间的日期(foreach)
问题是我必须计算这个结果日期之间的天数。
实施例:
<ul>
<?php
$values[] = array('example'=>'example1','date'=>'2016-25-12');
$values[] = array('example'=>'example2','date'=>'2016-26-12');
$values[] = array('example'=>'example3','date'=>'2016-28-12');
$values[] = array('example'=>'example4','date'=>'2016-30-12');
foreach($values[] as $example){
echo "<li>".$example['example']." - ".$example['date']." - ".$DAYS BETWEEN EACH DATE$."</li>";
}
?>
</ul>
要成为这样的事情:
我怎样才能麦这个钙? *第一个没有显示任何内容,因为它是第一个注册表。其他显示实际行和最后一个(上面)之间经过了多少天。
Ty。
答
我改变了数组中的日期格式,因为YYYY-DD-MM
未被识别为有效格式,YYYY-MM-DD
是。
然后,只需要保存以前的值并计算天数差异即可。的
<ul>
<?php
$values = array();
$values[] = array('example' => 'example1', 'date' => '2016-12-25');
$values[] = array('example' => 'example2', 'date' => '2016-12-26');
$values[] = array('example' => 'example3', 'date' => '2016-12-28');
$values[] = array('example' => 'example4', 'date' => '2016-12-30');
$previous = null; // Define the variable
foreach($values as $example){
echo "<li>".$example['example']." - ".$example['date'];
if ($previous !== null) { // If it's null, we're in the first loop
$difference= strtotime($example['date'])-strtotime($previous);
echo " - ".floor($difference/(60*60*24)); // $difference is in seconds, so convert to days by dividing by 60sec*60min*24hrs
}
$previous = $example['date']; // Set the current value, so it will be saved for the next iteration
echo "</li>";
}
?>
</ul>
输出上面会
- 例1 - 2016年12月25日
- 示例2 - 2016年12月26日 - 1
- 示例3 - 2016年12月28日 - 2
- example4 - 2016-12-30 - 2
答
$date = false;
foreach($values as $item) {
if ($date == false) {
$date = $item['date'];
} else {
$datetime1 = new DateTime($date);
$datetime2 = new DateTime($item['date']);
$interval = $datetime1->diff($datetime2);
echo $interval->format('%R%a days');
$date = $item['date'];
}
}
类似的东西。我没有检查语法,只是写了
答
<ul>
<?php
$values[] = array('example'=>'example1','date'=>'2016-25-12');
$values[] = array('example'=>'example2','date'=>'2016-26-12');
$values[] = array('example'=>'example3','date'=>'2016-28-12');
$values[] = array('example'=>'example4','date'=>'2016-30-12');
$date_prev = 0;
foreach($values as $example){
$parts = explode('-', $example[ 'date' ]);
$date_current = strtotime($parts[0] . '/' . $parts[2] . '/' . $parts[1]); // year-month-day format
$diff = $date_current - $date_prev;
$DAYS_BETWEEN_EACH_DATE = intval($diff/86400); // 86400 seconds in one day
echo "<li>" . $example['example'] . " - " . $example['date'] . ($date_prev ? " - ". $DAYS_BETWEEN_EACH_DATE . ' day(s)' : '') . "</li>";
$date_prev = $date_current;
}
?>
</ul>
泰。奇迹般有效! =) –