2013-04-07 26 views
5

Ho un problema. Ho un array multidimensionale, che assomiglia a questo:Array multidimensionale di ordinamento PHP per data

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 
      ) 
); 

voglio ordinare i messaggi di data più recente alla più antica data, così sembra che questo:

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 
       ) 
); 

Come si ordina vero?

risposta

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

Questo funziona bene ... –

2

Sto solo uscendo dalla mia scrivania per il giorno, quindi non posso offrire specifiche. Ma qui è un buon posto per iniziare che include esempi: array_multisort

4

È possibile farlo utilizzando usort con un 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

Si sarebbe considerato di essere gentile per aggiungere qualche spiegazione sul tuo codice. – zx485

Problemi correlati