2012-10-09 5 views
0

다음과 같은 배열이 있습니다. 간단히 말해서 날짜순으로 에코를 주문하고 싶기 때문에 맨 위에 가장 최근 날짜가 있습니다. 그래도 확실하지 않아요. PHP는 배열을 정렬 할 수 있고, b. 그것이 형식에 날짜를 읽을 수 있는지 여부. 그것이 더 쉽게 만들 수 있다면 캡처 딘 형식을 변경할 수 있습니까?PHP는 배열의 출력을 날짜순으로 정렬하는 법?

Array (
    [0] => Array (
    [month_year] => September2012 
    [vimeo_link] => http://vimeo.com/472 
    ) 
    [1] => Array (
    [month_year] => July2012 
    [vimeo_link] => https://vimeo.com/460 
    ) 
    [2] => Array (
    [month_year] => August2012 
    [vimeo_link] => https://vimeo.com/490 
    ) 

) 
foreach($rows as $row){?> 

    <li><a target="_blank" href="<?php echo $row['vimeo_link'];?>"><?php echo $row['month_year'];?></a></li>    
<?php 
    }?> 
+0

/비교 –

+2

에 대한 타임 스탬프 Plese 확인 : HTTP를 : // www가 있습니다. krio.me/sort-an-array-in-php-by-date/ –

답변

1

보고 싶을 것이다 당신은 당신이 시도 할 수있는 유효한 날짜 타임 스탬프로 그 달/날짜 문자열을 변환해야합니다

$rows = Array(
     "0" => Array("month_year" => "September2012","vimeo_link" => "http://vimeo.com/472"), 
     "1" => Array("month_year" => "July2012","vimeo_link" => "https://vimeo.com/460"), 
     "2" => Array("month_year" => "August2012","vimeo_link" => "https://vimeo.com/490")); 

usort($rows, function ($a, $b) { 
    $a = DateTime::createFromFormat("FY", $a['month_year']); 
    $b = DateTime::createFromFormat("FY", $b['month_year']); 
    return ($a == $b) ? 0 : (($a < $b) ? - 1 : 1); 
}); 


foreach ($rows as $row) { 
    printf("<li><a target=\"_blank\" href=\"%s\">%s</a></li>", $row['vimeo_link'], $row['month_year']); 
} 

출력

  • July2012
  • August2012
  • September2012 당신은 날짜로 날짜 문자열을 변환 사용자 정의 콜백 기능()에 usort 사용해야 할 것
  • +0

    대단히 감사합니다. 다른 방법으로 만들려면 어떻게해야합니까? 그래서 가장 최근의 달이 맨 위에 있습니다. – Nicola

    +0

    또한 왜 printf를 사용하고 echo하지 않았습니까? 나는 워드 프레스에서 이것을보고 그것이 무엇을하는지 모르겠다. – Nicola

    +1

    방금 ​​'<' to '>'이 변경되어 주문이 변경되었습니다. – Nicola

    관련 문제