2010-01-11 22 views
8

Come posso ordinare questo array da arrray chiavesorta array in DISC ordinare

array(
4 => 'four', 
3 => 'three', 
2 => 'two', 
1 => 'one', 
) 

come questo

array(
1 => 'one', 
2 => 'two', 
3 => 'three', 
4 => 'four', 
) 
+0

I dizionari non sono ordinati ... extra ct le chiavi in ​​una lista separata e ordinate quella. –

risposta

21

Se si desidera solo per invertire l'ordine, utilizzare array_reverse:

$reverse = array_reverse($array, true); 

Il secondo parametro è per preservare le chiavi.

3

Hai un array, si vuole risolvere la cosa da chiavi, in ordine inverso - - è possibile utilizzare la funzione di krsort:

ordina un array chiave in senso inverso fine, mantenendo la chiave per i dati correlazioni. Questo è utile principalmente per per gli array associativi.


Nel caso si, devi avere questo tipo di codice:

$arr = array(
    1 => 'one', 
    2 => 'two', 
    3 => 'three', 
    4 => 'four', 
); 

krsort($arr); 
var_dump($arr); 

che ottenere questo tipo di output:

$ /usr/local/php-5.3/bin/php temp.php 
array(4) { 
    [4]=> 
    string(4) "four" 
    [3]=> 
    string(5) "three" 
    [2]=> 
    string(3) "two" 
    [1]=> 
    string(3) "one" 
} 


Come sidenode: se avessi voluto ordinare per valori, avresti potuto usare arsort - ma non sembra essere quello che vuoi, qui.

0

Prova krsort() - che ordinerà in ordine inverso utilizzando il tasto dell'array, mentre rsort ordinerà il valore dell'array.

27

Se si desidera ordinare le chiavi in ​​uso al fine DISC:

krsort($arr); 

Se si desidera ordinare i valori in ordine DESC e mantenere l'uso associazioni degli indici:

arsort($arr); 

Se si desidera ordina i valori nell'ordine naturale DESC e mantieni l'uso dell'associazione dell'indice:

natcasesort($arr); 
$arr = array_reverse($arr, true);