2010-08-29 10 views
5

tengo una matriz de esta manera:ordenar una matriz base en la tecla

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

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

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

cómo puedo solucionarlo basa en el tiempo?

Respuesta

4

se puede ordenar de esta manera (ya que es un arreglo asociativo):

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

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

alguna idea de cómo invertir el orden? – greenbandit

+0

@greenbandit - Cambia la función de comparación a 'return strcmp ($ b ['time'], $ a ['time']);' - usort() se ordena según 'cmp()'. –

+0

@reverse: devuelve '-1 * strcmp (...);' o aplica 'array_reverse' después de la ordenación. – NikiC

1

Como se mencionó Gumbo, no se debe utilizar strcmp para valores enteros.

Utilice esta función

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

Para valores enteros, 'return $ a ['time'] - $ b ['time'];' sería suficiente. – salathe

Cuestiones relacionadas