ksort()
Scopri la funzione ksort() in PHP per ordinare un array per chiave in ordine crescente, con esempi pratici e flag di ordinamento.
Funzione PHP: Array ksort()
La funzione PHP ksort() ordina un array per chiavi in ordine crescente, mantenendo ciascuna chiave associata al suo valore originale. È il corrispettivo basato sulle chiavi di asort(), che ordina per valore, e l'opposto di krsort(), che ordina le chiavi in ordine decrescente.
Questa pagina illustra quando utilizzare ksort(), la sua sintassi, i parametri e il valore restituito, i flag di tipo di ordinamento disponibili, e diversi esempi pratici (inclusa la comune insidia dell'ordinamento di chiavi che sono stringhe numeriche).
Quando usare ksort()
Utilizza ksort() quando le chiavi hanno un significato e vuoi che l'array sia ordinato in base ad esse — ad esempio:
- Ordinare alfabeticamente per nome un array associativo di coppie
nome => valore. - Mettere le voci di configurazione o gli header HTTP in un ordine prevedibile e deterministico.
- Ordinare i dati indicizzati per anno, ID o categoria prima di iterarli o visualizzarli.
Poiché ksort() preserva l'associazione chiave/valore, è lo strumento giusto quando reindicizzare l'array (come farebbe il semplice sort()) causerebbe perdita di informazioni. Consulta la panoramica Ordinamento degli Array per un confronto di tutte le funzioni di ordinamento PHP.
Sintassi
ksort($array, $sorting_type);Parametri
La funzione ksort() accetta due parametri:
| Parametro | Obbligatorio | Descrizione |
|---|---|---|
$array | Sì | L'array da ordinare. Viene passato per riferimento e modificato in loco. |
$sorting_type | No | Un flag che controlla come vengono confrontate le chiavi (vedi la tabella sottostante). Il valore predefinito è SORT_REGULAR. |
Il flag $sorting_type accetta le seguenti costanti:
| Flag | Comportamento |
|---|---|
SORT_REGULAR | Confronta gli elementi normalmente (predefinito). Le stringhe numeriche vengono confrontate come numeri. |
SORT_NUMERIC | Confronta gli elementi numericamente. |
SORT_STRING | Confronta gli elementi come stringhe. |
SORT_NATURAL | Confronta gli elementi come stringhe usando l'«ordinamento naturale» (come natsort()). |
SORT_LOCALE_STRING | Confronta gli elementi come stringhe, in base alla locale corrente. |
Nota: ksort() modifica l'array originale in loco — non restituisce un nuovo array ordinato. L'ordine originale delle chiavi viene perso dopo la chiamata.
Valore Restituito
La funzione ksort() restituisce un boolean: true in caso di successo e false in caso di fallimento.
Esempio 1: Ordinare un Array Associativo per Chiave
In questo caso le chiavi sono nomi di persone, quindi ksort() ordina l'array alfabeticamente per nome (Ben, Joe, Peter) mantenendo ciascun nome abbinato all'età corretta:
Output:
Array
(
[Ben] => 37
[Joe] => 43
[Peter] => 35
)Esempio 2: Ordinare un Array Associativo per Chiave in Ordine Inverso
Per un ordine decrescente delle chiavi, usa krsort() — funziona esattamente come ksort() ma inverte il risultato:
Output:
Array
(
[Peter] => 35
[Joe] => 43
[Ben] => 37
)Esempio 3: Ordinare un Array Indicizzato per Chiave
Un array indicizzato ha già le chiavi 0, 1, 2, 3 in ordine, quindi ordinarlo per chiave lascia gli elementi invariati. Questo mostra che ksort() ordina le chiavi, non i valori — per ordinare i valori stessi, usa sort():
Output:
Array
(
[0] => red
[1] => green
[2] => blue
[3] => yellow
)Esempio 4: Ordinare un Array Indicizzato per Chiave in Ordine Inverso
Invertire l'ordine delle chiavi di un array indicizzato con krsort() mantiene ciascun valore con la sua chiave numerica originale, quindi gli elementi appaiono nell'ordine di inserimento inverso:
Output:
Array
(
[3] => yellow
[2] => blue
[1] => green
[0] => red
)Insidia: chiavi stringa numeriche e il flag di ordinamento
Una sorpresa comune è ordinare un array le cui chiavi sono stringhe numeriche. Per impostazione predefinita (SORT_REGULAR) PHP le confronta come numeri, quindi "10" viene dopo "2". Passando SORT_STRING vengono confrontate carattere per carattere, mettendo "10" prima di "2":
<?php
$data = ["10" => "a", "1" => "b", "2" => "c"];
ksort($data); // SORT_REGULAR (numeric)
print_r($data);
ksort($data, SORT_STRING); // string comparison
print_r($data);Output:
Array
(
[1] => b
[2] => c
[10] => a
)
Array
(
[1] => b
[10] => a
[2] => c
)Scegli il flag $sorting_type che corrisponde al modo in cui vuoi che le chiavi vengano interpretate.
Conclusione
La funzione ksort() ordina un array PHP per chiavi in ordine crescente, in loco, preservando ogni coppia chiave/valore. Usala quando le chiavi sono significative e l'ordine è importante; usa krsort() per l'ordine decrescente, asort() / arsort() per ordinare per valore mantenendo le chiavi, oppure sort() quando vuoi eliminare del tutto le chiavi. Scegli il flag $sorting_type corretto — specialmente quando le chiavi sono stringhe numeriche — per ottenere il confronto atteso.
graph TD
A[PHP array] -->|ksort| B[Sorted PHP array]