W3docs

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:

ParametroObbligatorioDescrizione
$arrayL'array da ordinare. Viene passato per riferimento e modificato in loco.
$sorting_typeNoUn 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:

FlagComportamento
SORT_REGULARConfronta gli elementi normalmente (predefinito). Le stringhe numeriche vengono confrontate come numeri.
SORT_NUMERICConfronta gli elementi numericamente.
SORT_STRINGConfronta gli elementi come stringhe.
SORT_NATURALConfronta gli elementi come stringhe usando l'«ordinamento naturale» (come natsort()).
SORT_LOCALE_STRINGConfronta 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:

php— editable, runs on the server

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:

php— editable, runs on the server

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():

php— editable, runs on the server

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:

php— editable, runs on the server

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]

Pratica

Pratica
Qual è lo scopo della funzione ksort() in PHP?
Qual è lo scopo della funzione ksort() in PHP?
Was this page helpful?