0

これは、日付でソートしようとしている配列です。

Array ( 
   [0] => 2013 Aug 01 
   [1] => 2013 Aug 02 
   [2] => 2013 Aug 05 
   [3] => 2013 Aug 06 
   [4] => 2013 Aug 07 
   [5] => 2013 Aug 08 
   [6] => 2013 Aug 09
   [7] => 2013 Jul 11
   [8] => 2013 Jul 12
   [9] => 2013 Aug 12 
   [10] => 2013 Aug 13 
   [11] => 2013 Aug 14
   [12] => 2013 Jul 15 
   [13] => 2013 Aug 15 
   [14] => 2013 Jul 16 
   [15] => 2013 Jul 17 
   [16] => 2013 Jul 18 
   [17] => 2013 Jul 19 
   [18] => 2013 Aug 19 
   [19] => 2013 Aug 20 
   [20] => 2013 Jul 22 
   [21] => 2013 Aug 22 
   [22] => 2013 Jul 23
   [23] => 2013 Aug 23
   [24] => 2013 Jul 24 
   [25] => 2013 Jul 25
   [26] => 2013 Jul 26 
   [27] => 2013 Jul 29 
   [28] => 2013 Jul 30 
   [29] => 2013 Aug 30 
)

多くの方法を試しましたが、日の値でのみソートされているようで、月は無視されます。

値は、 を使用して 01-08-2013 から 2013 Aug 01 に変換されますstrtotime()。私はすべての文字列を削除しようとしましたが、01082013 のような整数を持っているだけで、ソートするために日の値だけを調べました。

前もって感謝します。

これらの方法を試しましたが、日の値でのみソートしました

配列を日付でソートする方法は?

これを機能させるために使用しているコードへのリンクhttp://pastebin.com/Hr0rhUzn

4

2 に答える 2

3

のようにしてみてください

$new_arr = array_map('strtotime',$my_arr);
asort($new_arr);         // For ascending order
foreach($new_arr as $dates) {
     $result_arr[] = date('Y m d' , $dates);
}
print_r($result_arr);
于 2013-08-30T05:13:34.763 に答える
0

strtotime の有効な入力形式ではないため、日付が「2013 Aug 29」の形式で入力された場合、strtotime はタイムスタンプを返しません。スペースをダッシュ​​に置き換える必要があります。これが私の解決策です。

usort($myDateArray, "dateCompare");
function dateCompare($date1, $date2){
    if($date1 == $date2){
        return 0;
    }
    return (strtotime(str_replace(" ","-",$date1)) < strtotime(str_replace(" ","-",$date2))) ? -1 : 1;
}
于 2013-08-30T06:16:33.423 に答える