3

私は配列を持っています:

$array = array(array('2012-12-12', 'vvv'), array('2012-12-14', 'df'),array('2012-12-10', 'vvv'),array('2012-12-11', 'vvv'));

Array
(
    [0] => Array
        (
            [0] => 2012-12-12
            [1] => vvv
        )

    [1] => Array
        (
            [0] => 2012-12-14
            [1] => df
        )

    [2] => Array
        (
            [0] => 2012-12-10
            [1] => vvv
        )

    [3] => Array
        (
            [0] => 2012-12-11
            [1] => vvv
        )

)

http://codepad.org/gxw2yKMU

これを日付DESCでソートすることは可能ですか?この例では、次のようになります。

$array[1] //2012-12-14
$array[0] //2012-12-12
$array[3] //2012-12-11
$array[2] //2012-12-10

私にとって最良の方法はPHPの埋め込み関数を使用することですが、どのようにしたらよいでしょうか。:)

4

3 に答える 3

3

usortカスタム関数で使用できます。PHP <5.3を使用している場合は、私が持っているような匿名関数ではなく、名前付き関数が必要になります。

$array = array(
    array('2012-12-12', 'vvv'),
    array('2013-12-14', 'df'),
    array('2012-12-14', 'df'),
    array('2012-12-10', 'vvv'),
    array('2012-12-11', 'vvv')
);

usort($array, function($a, $b) {
    if ($a[0] == $b[0]) return 0;
    return ($a > $b) ? -1 : 1;
});
print_r($array);
于 2012-08-02T09:38:47.030 に答える
3

usortを使用できるはずです

usort( $array, 'sortFunction' );

function sortFunction( $a, $b ) {
    if( $a[0] == $b[0] )
        return 0;
    return ( $a[0] > $b[0] ? return -1 : 1 );
}
于 2012-08-02T09:40:22.330 に答える
2

あなたが使用することができますarray_multisort()

foreach ($array as $key => $row) {
    $dates[$key] = $row[0]; 
}
array_multisort($dates, SORT_DESC, $array);

まず、すべての日付を新しい配列に入れます。次に、array_multisort()2番目の配列()を最初の配列()と同じ順序で並べ替え$arrayます$dates

于 2012-08-02T09:38:58.217 に答える