2010-08-29 7 views
5

j'ai un tableau comme celui-ci:trier une base de tableau sur la touche

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

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

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

comment je peux les trier en fonction du temps?

Répondre

4

Vous pouvez trier cette façon (car il est un tableau associatif):

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

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

une idée d'inverser l'ordre? – greenbandit

+0

@greenbandit - Remplace la fonction de comparaison par 'return strcmp ($ b ['time'], $ a ['time']);' - usort() est un tri basé sur 'cmp()'. –

+0

@reverse: Renvoie '-1 * strcmp (...);' ou applique 'array_reverse' après tri. – NikiC

1

Comme mentionné Gumbo, vous ne devriez pas utiliser strcmp pour les valeurs entières.

Utilisez cette fonction

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

Pour les valeurs entières, 'return $ a ['time'] - $ b ['time'];' suffirait. – salathe