2010-08-29 12 views
5

ho un array come questo:ordinare una base serie sul tasto

Array 
(
    [0] => Array 
     (
      [title] => some title 
      [time] => 1279231500 
     ) 

    [1] => Array 
     (
      [title] => some title 2 
      [time] => 1279231440 
     ) 

    [2] => Array 
     (
      [title] => some title 3 
      [time] => 1279229880 
     ) 
) 

come posso risolverlo basato sul tempo?

risposta

4

È possibile ordinare in questo modo (dal momento che è un array associativo):

function cmp($a, $b) 
{ 
    return strcmp($a['time'], $b['time']); 
} 

usort($your_array, "cmp"); 
print_r($your_array); 
+0

alcuna idea di come invertire l'ordine? – greenbandit

+0

@greenbandit - Cambia la funzione di confronto in 'return strcmp ($ b ['time'], $ a ['time']);' - usort() è ordinamento basato su 'cmp()'. –

+0

@reverse: restituisce '-1 * strcmp (...);' o applica 'array_reverse' dopo l'ordinamento. – NikiC

1

Come accennato Gumbo, non si dovrebbe usare strcmp per valori interi.

Usare questa funzione

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

Per i valori interi, 'return $ a ['time'] - $ b ['time'];' sarebbe sufficiente. – salathe

Problemi correlati