🔽 Ordinare un Array per Chiavi in Ordine Decrescente con krsort() in PHP
La funzione krsort() serve per ordinare un array associativo in base alle chiavi,
ma in ordine decrescente (cioè dalla Z alla A, o dal numero più grande al più piccolo).
Come ksort(), mantiene le chiavi originali e i loro valori associati.
1. Sintassi
krsort(array, sort_flags);
- array → l’array da ordinare.
- sort_flags (opzionale) → specifica il tipo di ordinamento (alfabetico, numerico, naturale, ecc.).
2. Esempio base
<?php
$eta = [
"Luca" => 25,
"Anna" => 20,
"Marco" => 30
];
krsort($eta);
print_r($eta);
?>
Array
(
[Marco] => 30
[Luca] => 25
[Anna] => 20
)
L’array è stato ordinato in base alle chiavi in ordine decrescente (Z → A), ma i valori sono rimasti collegati alle rispettive chiavi.
3. Ordinamento numerico delle chiavi
<?php
$dati = [
10 => "Dieci",
2 => "Due",
5 => "Cinque"
];
krsort($dati, SORT_NUMERIC);
print_r($dati);
?>
Array
(
[10] => Dieci
[5] => Cinque
[2] => Due
)
In questo caso, l’array viene ordinato dalla chiave più alta alla più bassa.
4. Uso del parametro sort_flags
Il secondo parametro permette di controllare il tipo di confronto:
| Flag | Descrizione |
|---|---|
| SORT_REGULAR | Ordinamento standard (default) |
| SORT_STRING | Ordinamento alfabetico |
| SORT_NUMERIC | Ordinamento numerico |
| SORT_NATURAL | Ordina naturalmente (utile per file o versioni) |
<?php
$file = [
"file2" => "Documento B",
"file10" => "Documento C",
"file1" => "Documento A"
];
krsort($file, SORT_NATURAL);
print_r($file);
?>
Array
(
[file10] => Documento C
[file2] => Documento B
[file1] => Documento A
)
5. Differenze tra le funzioni di ordinamento per chiavi
| Funzione | Ordina per | Ordine | Chiavi preservate |
|---|---|---|---|
| ksort() | Chiavi | Crescente | Sì |
| krsort() | Chiavi | Decrescente | Sì |
| asort() | Valori | Crescente | Sì |
| arsort() | Valori | Decrescente | Sì |
LABORATORIO
Ordinare un array per chiavi in ordine decrescente con krsort()
In questo laboratorio imparerai a usare krsort() per ordinare un array associativo in base alle chiavi in ordine inverso, mantenendo i valori correttamente associati.
- Editor di codice PHP (VS Code, Notepad++)
- Server locale (XAMPP, MAMP, Laragon)
- Browser per visualizzare i risultati
1 Ordinare un array di studenti per chiave decrescente
Crea un file chiamato ordinamento-krsort.php e inserisci il seguente codice:
<?php
$studenti = [
"Marco" => 30,
"Luca" => 25,
"Anna" => 28
];
echo "<h3>Array originale:</h3>";
print_r($studenti);
krsort($studenti);
echo "<h3>Array ordinato per chiave (Z → A):</h3>";
print_r($studenti);
?>
2 Ordinare chiavi numeriche in senso inverso
Prova ora con chiavi numeriche:
<?php
$dati = [
10 => "Dieci",
3 => "Tre",
5 => "Cinque"
];
echo "<h3>Prima dell'ordinamento:</h3>";
print_r($dati);
krsort($dati, SORT_NUMERIC);
echo "<h3>Dopo l'ordinamento numerico decrescente delle chiavi:</h3>";
print_r($dati);
?>
3 Ordinamento naturale inverso delle chiavi
Simuliamo un elenco di file:
<?php
$file = [
"file2" => "Documento B",
"file10" => "Documento C",
"file1" => "Documento A"
];
echo "<h3>Ordinamento standard inverso:</h3>";
krsort($file);
print_r($file);
$file = [
"file2" => "Documento B",
"file10" => "Documento C",
"file1" => "Documento A"
];
echo "<h3>Ordinamento naturale inverso (file10 → file1):</h3>";
krsort($file, SORT_NATURAL);
print_r($file);
?>
4 Test e analisi
- Esegui lo script nel browser e osserva come cambia l'ordine delle chiavi.
- Prova a confrontare i risultati con
ksort()per capire la differenza. - Usa
SORT_NUMERICoSORT_NATURALper testare diversi tipi di chiavi. - Prova ad aggiungere nuove chiavi e osserva dove vengono posizionate.