2013-04-07 8 views
5

Mam problem. Mam tablicę wielowymiarową, która wygląda tak:Tablica wielowymiarowa sortowania PHP według daty

Array ([0] => 
       Array ( 
        [0] => Testguy2's post. 
        [1] => testguy2 
        [2] => 2013-04-03 
      ) 

     [1] => Array ( 
        [0] => Testguy's post. 
        [1] => testguy 
        [2] => 2013-04-07 
      ) 
); 

Chcę uporządkować posty z najnowszej daty do najstarszej dacie, więc wygląda to tak:

Array ([1] => Array ( 
        [0] => Testguy's post. 
        [1] => testguy 
        [2] => 2013-04-07 
       ) 
     [0] => Array ( 
        [0] => Testguy2's post. 
        [1] => testguy2 
        [2] => 2013-04-03 
       ) 
); 

jaki sposób sortowania to?

Odpowiedz

4
function cmp($a, $b){ 

    $a = strtotime($a[2]); 
    $b = strtotime($b[2]); 

    if ($a == $b) { 
     return 0; 
    } 
    return ($a < $b) ? -1 : 1; 
} 

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

Działa to dobrze ... –

2

Po prostu odchodzę od swojego biurka na cały dzień, więc nie mogę podać szczegółów. Ale tu jest dobre miejsce, aby zacząć który zawiera przykłady: array_multisort

4

Można to zrobić za pomocą usort z Closure:

usort($array, function($a, $b) { 
    $a = strtotime($a[2]); 
    $b = strtotime($b[2]); 
    return (($a == $b) ? (0) : (($a > $b) ? (1) : (-1))); 
}); 
1
$dates = array();  
foreach($a AS $val){ 
    $dates[] = strtotime($val[2]); 
} 
array_multisort($dates, SORT_ASC, $a); 
+0

Byłoby to być uznane za ładny aby dodać trochę objaśnień do swojego kodu. – zx485

Powiązane problemy