2012-04-03 26 views
22

Duplicar posible:
how to sort a multidemensional array by an inner key
How to sort an array of arrays in php?PHP Ordenar ordenamiento por campo?

Como puedo ordenar una matriz como: $array[$i]['title'];

estructura de matriz podría ser como:

array[0](
'id' => 321, 
'title' => 'Some Title', 
'slug' => 'some-title', 
'author' => 'Some Author', 
'author_slug' => 'some-author'); 

array[1](
'id' => 123, 
'title' => 'Another Title', 
'slug' => 'another-title', 
'author' => 'Another Author', 
'author_slug' => 'another-author'); 

Entonces, ¿los datos se muestran en orden ASC según el campo de título en la matriz?

+0

Michael: Tim solo estaba siendo útil. Buscar primero es un requisito previo aquí, y obtenemos un montón de preguntas que parecen no haber buscado/probado primero. – halfer

Respuesta

68

Utilice usort que se ha creado explícitamente para este propósito.

function cmp($a, $b) 
{ 
    return strcmp($a["title"], $b["title"]); 
} 

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

Puedes multiplicar por -1 para invertir el orden también, solo un FYI para cualquiera que pueda necesitarlo. –

+14

Al iniciar PHP 5.3 puede usar funciones anónimas, lo que es útil especialmente si está dentro de una clase en un espacio de nombres: 'usort ($ domain_array, function ($ a, $ b) { return strcmp ($ a [" nombre "], $ b [" nombre "]); }); ' –

+1

Solo para agregar un poco a @GabiLee, si desea que el campo de búsqueda sea dinámico en función de alguna variable que ya haya configurado, intente esto: usort ($ domain_array, function ($ a, $ b) use ($ searchField) {return strcmp ($ a [$ searchField], $ b [$ searchField]);}); Esto podría ser útil, por ejemplo, en una página web donde el usuario puede elegir un campo para ordenar por. – stealthysnacks

Cuestiones relacionadas