2017-01-09 13 views
1

私はこの配列を持っており、日付順に昇順にソートします。私はこのサイトから様々な回答を試みましたが、どれも正しく働いていません。だから私はこれをどのようにすることができますか?どのように配列をPHPで日付順に並べ替えることができます

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

私はPHPを使用しています。これは私がこれまで試みたものです。この関数は他のすべての質問で述べたようにソートされません。あなたの文字列の場合

$data = array listed above; 
function cmp($a, $b) 
{ 
    if (strtotime($a) == strtotime($b)) 
    { 
     return 0; 
    } 
    return (strtotime($a) < strtotime($b)) ? -1 : 1; 
} 

uasort($data, "cmp"); 
+1

[PHPでソートマルチアレイ(http://stackoverflow.com/questions/5044726/sort-multi-array-in-php) –

+0

の可能性の重複これは重複してもよいですしかし、私は他の答えからそれを働かせることはできません。 – Hutarsh

+0

何を試しましたか?試したコードを投稿してもうまくいきませんでしたので、お手伝いできますか? –

答えて

3

dd/mm/yyタイプで、直接strtotimeまたはdate_createで使用することはできません。 DataTimeを使用してdatetimeを作成し、datetime比較演算子を使用できます。

usort($array, function($a, $b){return DateTime::createFromFormat('d/m/Y', $a) > DateTime::createFromFormat('d/m/Y', $b);}); 
+1

これは私のために働く。 – Hutarsh

+1

唯一のものです。ありがとう! – VGranin

0
$document_list = array(array); 
$document_list= array_map(function($v) { 
    return date('Y-m-d', strtotime($v)); 
}, $document_list); 

function sortByDate($a, $b) { 
    return strtotime($b) - strtotime($a); 
} 

usort($document_list, "sortByDate"); 

$document_list= array_map(function($v) { 
    return date('m-d-Y', strtotime($v)); 
}, $document_list); 
+0

コードは、最初の行に解析エラーを返します。 –

+0

'array_map'を使う必要はありません。 – Mohammad

0
function desc_date_sort($a, $b){ 
    $date1ts = DateTime::createFromFormat('d/m/Y', $a); 
    $date2ts = DateTime::createFromFormat('d/m/Y', $b); 
    return $date1ts === $date2ts ? 0 : ($date1ts < $date2ts ? 1 : -1); 
} 
usort($dates_array, 'desc_date_sort'); 
0
​​
関連する問題