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

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 回答
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 回答
2

您可以使用array_multisort()

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

首先,您将所有日期放在一个新数组中。然后,array_multisort()将按照与第一个数组 ( $array) 相同的顺序对第二个数组 ( ) 进行$dates排序

于 2012-08-02T09:38:58.217 回答