2015-01-25 2 views
1

DatePeriod를 사용하여 월간 간격으로 두 달 사이의 모든 달을 가져옵니다. 그러나 결과 개체는 시간 순서대로입니다. 그러나 추가 처리를 위해 역순으로 순서가 필요합니다.날짜/시간 PHP 개체의 순서를 반대로하는 방법

현재 foreach 루프를 사용하여 오브젝트를 배열로 밀어 넣습니다. 그런 다음 arrary_reserve ($ var)를 역순으로 변경하십시오.

더 좋은 방법이 있나요?

이 코드

<?php 

$out = " 
<h3>Archive</h3> 
"; 
$start = new DateTime('2010-01-01'); 
$end  = new DateTime('2015-02-01'); 
$interval = DateInterval::createFromDateString('1 month'); 
$period = new DatePeriod($start, $interval, $end); 

$a = array(); 
foreach ($period as $dt) { 
array_push($a, $dt); 
} 
$a = array_reverse($a); 

foreach ($a as $dt) { 
    $d = $dt->format("Y-m-d"); 
    $nextmonth = date('Y-m-d', strtotime('+1 month', strtotime($d))); 
    $count = count($pages->find("template=post, post_date>=$d,  post_date<$nextmonth")); 
    if ($count > 0) { 
     $out .= "<a href='{$pages->get('template=home')->url}" . date('Y', strtotime($d)) . "/" . date('m', strtotime($d)) . "'>" . date('M Y', strtotime($d)) . " (" . $count . ")" . "</a><br/>"; 
    } 

} 

echo $out; 

당신이 $ 페이지 -> GET()을 무시할 수의 나의 조각이다. 이것은 단지 CMS 프레임 워크 API 호출입니다. 반대 순서로 추가하는 방법에 대한

$interval = DateInterval::createFromDateString('1 month'); 
$interval->invert = 1; 

귀하의 간격은 이제 부정적인 방법

+0

당신은 사용할 수 있습니다 ['array_reverse()'(http://www.w3schools.com/ php/func_array_reverse.asp) 주문 후 ... –

+0

$ a = array_reverse ($ period); null을 반환합니다. 그래서 다른 배열로 푸시하는 데 foreach 루프를 사용합니다. –

답변

0

일개월

+0

이 작동하지 않습니다. 은 아직 시간순으로 있습니다. –

관련 문제