2010-09-27 17 views
7
Array 
(
[1] => Array 
    (
     [id] => 1 
     [sort] => 1 
    ) 

[3] => Array 
    (
     [id] => 3 
     [sort] => 3 
    ) 

[2] => Array 
    (
     [id] => 2 
     [sort] => 2 
    ) 

)matriz PHP especie usando val interior

¿Cómo puedo ordenar que lo que su re-ordenado a través del 'tipo' interior llave? es decir, lo anterior se vería así:

Array 
(
[1] => Array 
    (
     [id] => 1 
     [sort] => 1 
    ) 

[2] => Array 
    (
     [id] => 2 
     [sort] => 2 
    ) 

[3] => Array 
    (
     [id] => 3 
     [sort] => 3 
    ) 

)

+0

importantes cantidades de duplicados: http://stackoverflow.com/search?q=php+sort (Maldita sea, ¿por qué es un tema tan caliente últimamente?) –

+0

Generalmente PHP .net tiene muchas notas realmente útiles de los usuarios, ¿miró a través de la página de clasificación y, de ser así, dónde salieron las cosas? Lo mejor es que podamos ayudarlo si sabemos lo que ha intentado y lo que emitió. http://php.net/manual/en/function.sort.php – Incognito

+0

@dennis Es el 27 de septiembre, creo que se debe la primera ronda de proyectos escolares. – Incognito

Respuesta

0

Algo como esto:

uasort($array, 'compfunc'); 

function compfunc($a, $b) 
{ 
    return $a['sort'] - $b['sort']; 
} 
16

Usted puede utilizar usort con esta función de comparación:

function cmpBySort($a, $b) { 
    return $a['sort'] - $b['sort']; 
} 
usort($arr, 'cmpBySort'); 

O utilice array_multisort con una matriz adicional de valores clave para el orden de clasificación:

$keys = array_map(function($val) { return $val['sort']; }, $arr); 
array_multisort($keys, $arr); 

Aquí array_map con el anonymous function se utiliza para construir una matriz de los ordenar los valores que se utiliza para ordenar los valores de la matriz en sí. La ventaja de esto es que hay una función de comparación np que debe invocarse para cada par de valores.

+0

Esto funcionó para mí. Gracias. – rottenoats

3

Algo como esto:

usort($array, function (array $a, array $b) { return $a["sort"] - $b["sort"]; }); 
+0

Maldición, golpeado por una milla ... –

+0

Por favor, elimine esta respuesta duplicada (y solo de código). No serviré para beneficiar a los lectores de SO. – mickmackusa

Cuestiones relacionadas