2013-04-29 6 views
1

У меня есть этот король массива в php и хотел бы отсортировать его по дате Array [i] [2] массива .. самая высокая дата должна быть наверху .. как я могу сделай это?Сортировка ассоциативного массива по дате

это мой массив:

Array ( 
    [0] => Array ( 
     [0] => 15.04.2013 
     [1] => 17:34 
     [2] => 06.04.2013 
     ) 

    [1] => Array ( 
     [0] => 15.04.2013 
     [1] => 15:12 
     [2] => 13.04.2013 
    ) 

    [2] => Array ( 
     [0] => 15.04.2013 
     [1] => 16:42 
     [2] => 16.02.2013 
    ) 

    [3] => Array ( 
     [0] => 04.04.2013 
     [1] => 21:12 
     [2] => 16.03.2013 
    ) 

    [4] => Array ( 
     [0] => 29.04.2013 
     [1] => 17:16 
     [2] => 19.04.2013 
    ) 
) 
+1

Этот вопрос имеет ответ. http://stackoverflow.com/questions/777597/sorting-an-associative-array-in-php – popthestack

+0

уже пытался использовать usort, но он получил неправильный выбор – 2013-04-29 17:38:42

+0

@IlendemliMuhammet Вы пробовали использовать, как приведенный ниже пример? – Ibu

ответ

2

Вы можете использовать usort

Пример:

usort($array,function ($a,$b){ 
    $t1 = strtotime($a[0]); 
    $t2 = strtotime($b[0]); 
    if ($t1 == $t2) { 
     return 0; 
    } 
    return ($t1 < $t2) ? -1 : 1; 
}); 
+0

Как это использовать? как вы называете эту функцию? – 2013-04-29 17:40:40

+0

@IlendemliMuhammet оберните это целое в функции вашего собственного имени. то вы можете называть его всякий раз, когда хотите, независимо от того, что хотите. – popthestack

+0

использует функцию usort, передавая массив, а затем анонимную функцию. – Ibu

-1

Вы можете написать свой заказ Сортировщик обратного вызова с помощью usort (например, в ответ Lbu в)

array_multisort является альтернативой, используя подобные;

здесь является функцией сортировки для нескольких dimmensional массивов

https://gist.github.com/tufanbarisyildirim/1220785

+0

Руководство по php было бы лучшей отправной точкой http://php.net/manual/en/function.usort.php – Waygood

0

Вы можете сделать это с помощью usort(), как это :

function cmp($a,$b) { 
    if ($a[2] == $b[2]) { 
     return 0; 
    } 
    $arr = explode('.',$a[2]); 
    $brr = explode('.',$b[2]); 
    $anum = (int) ($arr[2] . $arr[1] . $arr[0]); 
    $bnum = (int) ($brr[2] . $brr[1] . $brr[0]); 
    return ($anum < $bnum) ? -1 : 1; 
} 

usort($array, "cmp"); 
0

Попробуйте это:

function cmp($a, $b) 
{ 
    $a = strtotime($a[2]); 
    $b = strtotime($b[2]); 
    if ($a == $b) { 
     return 0; 
    } 
    return ($a < $b) ? -1 : 1; 
} 

$a = array ( 
    0 => array ( 
     0 => '15.04.2013' 
     ,1 => '17:34' 
     ,2 => '06.04.2013' 
     ) 

    ,1 => array ( 
     0 => '15.04.2013' 
     ,1 => '15:12' 
     ,2 => '13.04.2013' 
    ) 

    ,2 => array ( 
     0 => '15.04.2013' 
     ,1 => '16:42' 
     ,2 => '16.02.2013' 
    ) 

    ,3 => array ( 
     0 => '04.04.2013' 
     ,1 => '21:12' 
     ,2 => '16.03.2013' 
    ) 

) ; 

usort($a, "cmp"); 
+0

сделал то же самое с кодом ibu – 2013-04-29 17:46:50

Смежные вопросы