🔤 Ordinare un Array Associativo per Chiave con ksort() in PHP
La funzione ksort() serve per ordinare un array associativo in base alle chiavi, in ordine crescente.
A differenza di asort() e arsort() che ordinano in base ai valori,
ksort() agisce sulle chiavi mantenendo intatti i valori associati.
1. Sintassi
ksort(array, sort_flags);
- array → l’array da ordinare.
- sort_flags (opzionale) → tipo di ordinamento (alfabetico, numerico, naturale, ecc.).
2. Esempio base
<?php
$eta = [
"Luca" => 25,
"Anna" => 20,
"Marco" => 30
];
ksort($eta);
print_r($eta);
?>
Array
(
[Anna] => 20
[Luca] => 25
[Marco] => 30
)
L’array è stato ordinato in base alle chiavi (in ordine alfabetico), mentre i valori sono rimasti invariati.
3. Ordinamento numerico delle chiavi
<?php
$dati = [
10 => "Dieci",
2 => "Due",
5 => "Cinque"
];
ksort($dati, SORT_NUMERIC);
print_r($dati);
?>
Array
(
[2] => Due
[5] => Cinque
[10] => Dieci
)
Usando SORT_NUMERIC, l’ordinamento segue il valore numerico delle chiavi.
4. Uso del parametro sort_flags
Puoi usare il secondo parametro per controllare il tipo di confronto:
| Flag | Descrizione |
|---|---|
| SORT_REGULAR | Ordinamento standard (default) |
| SORT_STRING | Ordinamento alfabetico delle chiavi |
| SORT_NUMERIC | Ordinamento numerico delle chiavi |
| SORT_NATURAL | Ordina naturalmente (es. file2, file10) |
<?php
$file = [
"file2" => "Documento B",
"file10" => "Documento C",
"file1" => "Documento A"
];
ksort($file, SORT_NATURAL);
print_r($file);
?>
Array
(
[file1] => Documento A
[file2] => Documento B
[file10] => Documento C
)
5. Differenze tra le funzioni di ordinamento
| Funzione | Cosa ordina | Ordine | Chiavi preservate |
|---|---|---|---|
| sort() | Valori | Crescente | No |
| asort() | Valori | Crescente | Sì |
| arsort() | Valori | Decrescente | Sì |
| ksort() | Chiavi | Crescente | Sì |
LABORATORIO
Ordinare un array per chiavi con ksort()
In questo laboratorio imparerai a usare ksort() per ordinare un array associativo in base alle chiavi, senza modificare i valori. Vedrai esempi con chiavi testuali e numeriche.
- Editor di codice PHP (VS Code, Notepad++)
- Server locale (XAMPP, MAMP, Laragon)
- Browser per testare i risultati
1 Creare un array associativo
Crea un file chiamato ordinamento-ksort.php e inserisci il seguente codice:
<?php
$studenti = [
"Marco" => 30,
"Luca" => 25,
"Anna" => 28
];
echo "<h3>Array originale:</h3>";
print_r($studenti);
ksort($studenti);
echo "<h3>Array ordinato per chiave (A → Z):</h3>";
print_r($studenti);
?>
2 Ordinare chiavi numeriche
Prova ora con chiavi numeriche:
<?php
$dati = [
10 => "Dieci",
3 => "Tre",
5 => "Cinque"
];
echo "<h3>Prima dell'ordinamento:</h3>";
print_r($dati);
ksort($dati, SORT_NUMERIC);
echo "<h3>Dopo l'ordinamento numerico delle chiavi:</h3>";
print_r($dati);
?>
3 Ordinamento naturale delle chiavi
Simuliamo un elenco di file:
<?php
$file = [
"file2" => "Documento B",
"file10" => "Documento C",
"file1" => "Documento A"
];
echo "<h3>Ordinamento standard:</h3>";
ksort($file);
print_r($file);
$file = [
"file2" => "Documento B",
"file10" => "Documento C",
"file1" => "Documento A"
];
echo "<h3>Ordinamento naturale (file1, file2, file10):</h3>";
ksort($file, SORT_NATURAL);
print_r($file);
?>
4 Test e analisi
- Esegui lo script nel browser e confronta i diversi ordinamenti.
- Prova a cambiare l’ordine delle chiavi o i loro valori.
- Confronta il risultato con
asort()per vedere la differenza tra ordinamento per chiave e per valore.