2012-10-09 20 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

你需要使用usort()與轉換的日期字符串到日期的自定義回調函數/比較 –

+2

時間戳普萊舍檢查: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
  • +0

    非常感謝,我該如何做另一種方式,所以最近的一個月是在頂部? – Nicola

    +0

    另外,爲什麼你使用printf而不是echo?我在wordpress中看到了這一點,我不確定它的作用。 – Nicola

    +1

    只是改變了'<' to '>'而且改變了順序。 – Nicola

    相關問題