0

次のようなPHP配列があります。

$dates = array();
$dates['01-07-2013'] = 'dummy data';
$dates['01-21-2013'] = 'dummy data';
$dates['01-28-2013'] = 'dummy data';
$dates['01-20-2012'] = 'dummy data';

ksort($dates)を使用すると、正しくソートされません。このようにキーを並べ替える方法はありますか?

ソートが返されることを期待します:

'01-30-2012',
'01-07-2013',
'01-21-2013',
'01-28-2013',
4

4 に答える 4

0

ksort のデフォルトのソートタイプSORT_REGULAR

SORT_REGULAR - アイテムを通常どおりに比較します (タイプを変更しないでください)

日付の形式は、PHP で一般的な文字列に評価されます。

文字列としてソートできるように、これらをフォーマットする必要があります。

于 2013-05-09T15:18:41.880 に答える
0

uksort を使用できますが、比較関数では次のようになります。

function sort_func($date1, $date2){
    return strtotime(str_replace("-","/", $date1)) - strtotime(str_replace("-","/", $date2));
}

uksort($dates, "sort_func");
于 2013-05-09T15:42:38.413 に答える