krsort()
Ordinare gli array in PHP è un'operazione comune. La funzione krsort() ordina un array per chiave in ordine decrescente.
Funzione PHP krsort(): Ordina un Array per Chiave in Ordine Decrescente
Ordinare gli array in PHP è un'operazione comune, specialmente quando si lavora con grandi quantità di dati. La funzione PHP krsort() è una funzione estremamente utile che consente agli sviluppatori di ordinare un array per chiave in ordine decrescente. Questa funzione è molto potente e può far risparmiare molto tempo e sforzo nell'ordinamento degli array. In questo articolo, analizzeremo in dettaglio la funzionalità della funzione krsort() e mostreremo come usarla in diversi scenari.
Cos'è krsort()?
La funzione krsort() è una funzione integrata di PHP che ordina un array in ordine decrescente in base alle sue chiavi, preservando l'associazione tra ogni chiave e il suo valore. Il nome sta per key reverse sort (ordinamento inverso per chiave). È la controparte in ordine decrescente di ksort(), che ordina per chiave in ordine crescente.
Poiché ordina per chiave (non per valore), krsort() è più utile con array associativi o array con chiavi numeriche esplicite — ad esempio, ordinare record con chiave per ID, anno o priorità in modo che la chiave più grande venga prima.
Due cose da tenere a mente:
krsort()ordina l'array in place e restituiscetruein caso di successo (non restituisce mai l'array ordinato), quindi si chiama direttamente sulla variabile.- Lavora sulle chiavi dell'array. Per ordinare per valore, usare
arsort()(mantiene le chiavi) orsort()(reindicizza).
Sintassi di krsort()
La sintassi della funzione krsort() è la seguente:
krsort(array &$array, int $flags = SORT_REGULAR): trueQui, $array è l'array da ordinare (passato per riferimento, quindi l'array originale viene modificato), e $flags è un parametro opzionale che controlla come vengono confrontate le chiavi. La funzione restituisce sempre true. I possibili valori di $flags sono:
SORT_REGULAR: Questo è il valore predefinito. La funzione ordina gli elementi normalmente, senza alcuna modifica ai loro tipi di dati.SORT_NUMERIC: La funzione ordina gli elementi numericamente, ovvero trattandoli come numeri.SORT_STRING: La funzione ordina gli elementi come stringhe.SORT_LOCALE_STRING: La funzione ordina gli elementi come stringhe, in base all'impostazione locale corrente.SORT_NATURAL: La funzione ordina gli elementi in ordine naturale, ovvero trattandoli come stringhe, ma tenendo conto dei loro valori numerici.SORT_FLAG_CASE: Questo flag può essere combinato conSORT_STRINGoSORT_NATURALper ordinare le stringhe in modo case-insensitive.
Esempi di utilizzo di krsort()
Ora vediamo alcuni esempi di come usare la funzione krsort().
Esempio 1: Ordinare un array in ordine decrescente in base alle sue chiavi
Output:
Array
(
[d] => date
[c] => cherry
[b] => banana
[a] => apple
)In questo esempio, abbiamo un array con quattro elementi. Stiamo ordinando l'array in ordine decrescente in base alle sue chiavi usando la funzione krsort(). L'output mostra che l'array è stato ordinato in ordine decrescente in base alle sue chiavi.
Esempio 2: Ordinare un array in ordine decrescente in base alle sue chiavi, numericamente
Output:
Array
(
[4] => cherry
[3] => date
[2] => apple
[1] => banana
)Qui le chiavi sono stringhe numeriche. Ordinando con il flag SORT_NUMERIC le si confronta come numeri, quindi l'array risulta ordinato dalla chiave più alta (4) a quella più bassa (1). Si noti che PHP converte automaticamente le chiavi stringa simili a interi come "1" in interi, quindi SORT_REGULAR darebbe lo stesso risultato in questo caso — il flag SORT_NUMERIC è importante quando le chiavi potrebbero altrimenti essere confrontate come stringhe (dove "10" ordina prima di "9").
Esempio 3: Ordinare un array in ordine decrescente in base alle sue chiavi, senza distinzione tra maiuscole e minuscole
Output:
Array
(
[d] => date
[C] => cherry
[b] => banana
[A] => apple
)In questo esempio, abbiamo un array con quattro elementi, dove le chiavi sono stringhe, alcune delle quali in maiuscolo. Stiamo ordinando l'array in ordine decrescente in base alle sue chiavi, senza distinzione tra maiuscole e minuscole, usando la funzione krsort() con i flag SORT_STRING e SORT_FLAG_CASE. L'output mostra che l'array è stato ordinato in ordine decrescente in base alle sue chiavi, ignorando la distinzione tra maiuscole e minuscole.
Funzioni di ordinamento correlate
PHP offre un'intera famiglia di funzioni per l'ordinamento degli array. La scelta di quella giusta dipende da due domande: si ordina per chiave o per valore, e si vuole l'ordine crescente o decrescente?
| Funzione | Ordina per | Ordine | Mantiene l'associazione chiave |
|---|---|---|---|
ksort() | Chiave | Crescente | Sì |
krsort() | Chiave | Decrescente | Sì |
asort() | Valore | Crescente | Sì |
arsort() | Valore | Decrescente | Sì |
sort() | Valore | Crescente | No (reindicizzato) |
rsort() | Valore | Decrescente | No (reindicizzato) |
uksort() | Chiave | Callback personalizzato | Sì |
Se la logica di ordinamento è troppo specifica per i flag standard — ad esempio, ordinare le chiavi per lunghezza della stringa — ricorrere a uksort(), che consente di fornire la propria funzione di confronto.
Conclusione
La funzione krsort() ordina un array per le sue chiavi in ordine decrescente, in place, preservando ogni coppia chiave-valore. Accetta un argomento opzionale per il flag di ordinamento che consente di confrontare le chiavi numericamente, come stringhe, in modo naturale o senza distinzione tra maiuscole e minuscole. Usare krsort() ogni volta che si ha un dataset con chiavi — ID, anni, priorità — che si desidera presentare dalla chiave più alta alla più bassa, e usare i suoi parenti ksort() e arsort() quando si ha bisogno di un ordine diverso o si vuole ordinare per valore.