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

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

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

)array PHP sorta usando val interno

Come si ordina così la sua ri-ordinato utilizzando il 'tipo' interno chiave? cioè quanto sopra sarebbe simile a questa:

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

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

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

)

+0

importanti quantità di duplicati: http://stackoverflow.com/search?q=php+sort (Accidenti, perché è questo un tema così caldo ultimamente?) –

+0

Generalmente PHP .net ha un sacco di note molto utili da parte degli utenti, hai guardato attraverso la pagina di ordinamento e, in caso affermativo, dove sono andate le cose? È meglio se possiamo aiutarti se sappiamo che cosa hai provato e che cosa hai emesso. http://php.net/manual/en/function.sort.php – Incognito

+0

@dennis È il 27 settembre, penso che il primo round di progetti scolastici sia dovuto. – Incognito

risposta

0

Qualcosa di simile a questo:

uasort($array, 'compfunc'); 

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

È possibile utilizzare usort con questa funzione di confronto:

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

O si utilizza array_multisort con un ulteriore array di valori chiave per il tipo di ordinamento:

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

Qui array_map con la anonymous function sono utilizzati per costruire una matrice dei ordinamento valori che viene utilizzato per ordinare i valori matrice stessa. Il vantaggio di questo è che esiste una funzione di confronto np che deve essere chiamata per ogni coppia di valori.

+0

Questo ha funzionato per me. Grazie. – rottenoats

3

Qualcosa di simile a questo:

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

Accidenti, bastonato per un miglio ... –

+0

Si prega di cancellare questa risposta duplicata (e solo codice). Non servirò a beneficio dei lettori di SO. – mickmackusa

Problemi correlati