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;
귀하의 간격은 이제 부정적인 방법
당신은 사용할 수 있습니다 ['array_reverse()'(http://www.w3schools.com/ php/func_array_reverse.asp) 주문 후 ... –
$ a = array_reverse ($ period); null을 반환합니다. 그래서 다른 배열로 푸시하는 데 foreach 루프를 사용합니다. –