這與另一個問題有關,這裏提到的另一個問題很完美,但我需要反過來,你有什麼想法來實現這個嗎?兩個日期在PHP中,每個循環之間的日期,但相反?
這裏原來的問題 I have 2 dates in PHP, how can I run a foreach loop to go through all of those days?
這與另一個問題有關,這裏提到的另一個問題很完美,但我需要反過來,你有什麼想法來實現這個嗎?兩個日期在PHP中,每個循環之間的日期,但相反?
這裏原來的問題 I have 2 dates in PHP, how can I run a foreach loop to go through all of those days?
你可以使用iterator_to_array + array_reverse方法:
foreach (array_reverse(iterator_to_array($period)) as $day) {...}
完美正是我一直在找工作。謝謝。我已經完成了數組反轉,但錯過了iterator_array。 – 2014-10-10 11:36:17
是的,你可以在日期格式
$begin = new DateTime('2010-05-01');
$end = new DateTime('2010-05-10');
$interval = DateInterval::createFromDateString('1 day');
$period = new DatePeriod($begin, $interval, $end);
$reverse = array_reverse(iterator_to_array($period)); //sorts in descending order...
foreach ($reverse as $dt)
echo $dt->format("l Y-m-d H:i:s\n"); //apply the format you want.
的反向使用它,如果我有你錯了,請發表評論...
使用PHP 5.5發電機
function period($begin, $interval, $end) {
if ($begin < $end) {
while ($begin <= $end) {
yield $begin;
$begin->add($interval);
}
}else {
while ($end <= $begin) {
yield $begin;
$begin->sub($interval);
}
}
}
$interval = new \DateInterval('P1D');
$begin = new \DateTime('2010-05-10');
$end = new \DateTime('2010-05-01');
foreach (period($begin, $interval, $end) as $dt) {
echo $dt->format("l Y-m-d H:i:s"), PHP_EOL;
}
$begin = new \DateTime('2010-05-01');
$end = new \DateTime('2010-05-10');
foreach (period($begin, $interval, $end) as $dt) {
echo $dt->format("l Y-m-d H:i:s"), PHP_EOL;
}
http://stackoverflow.com/a/10777617/1870760 – 2014-10-10 11:17:53
它是對象,而不是一個陣列,它不具有反向排列 – 2014-10-10 11:19:56