W3docs

Come ordinare gli array in PHP con la funzione asort()

Scopri come usare la funzione asort() di PHP per ordinare array per valore in ordine crescente preservando le associazioni chiave-valore.

Come sviluppatore web, potresti trovarti in situazioni in cui è necessario manipolare array nel tuo codice PHP. Una di queste operazioni è l'ordinamento dell'array. La funzione integrata asort() in PHP può essere utilizzata per ordinare un array in base ai suoi valori in ordine crescente. In questo articolo esploreremo come usare la funzione asort(), la sua sintassi ed esempi di utilizzo nel codice.

Sintassi di asort()

La funzione asort() ordina un array in base ai suoi valori in ordine crescente, mantenendo le associazioni chiave-valore. La sintassi della funzione è la seguente:

Sintassi della funzione asort

asort($array, $sorting_type);

Il primo argomento $array è l'array da ordinare. Il secondo argomento $sorting_type è facoltativo e specifica il tipo di ordinamento. I valori possibili includono:

  • SORT_REGULAR - confronta gli elementi normalmente
  • SORT_NUMERIC - confronta gli elementi numericamente
  • SORT_STRING - confronta gli elementi come string
  • SORT_LOCALE_STRING - confronta gli elementi come string in base alla lingua corrente

Se il parametro $sorting_type non viene fornito, viene usato SORT_REGULAR per impostazione predefinita. Nota che asort() modifica l'array originale in place e restituisce true in caso di successo o false in caso di errore — non restituisce un nuovo array ordinato, quindi non scrivere $sorted = asort($array) aspettandosi i dati ordinati in $sorted.

Quando usare asort()

La caratteristica fondamentale che distingue asort() dalla semplice sort() è che mantiene ogni valore associato alla sua chiave originale. Usa asort() quando le chiavi hanno un significato che non puoi permetterti di perdere — ad esempio un array associativo che mappa nomi a punteggi, id a prezzi o nomi utente a timestamp dell'ultimo accesso. Se ordini quel tipo di dati con sort(), PHP elimina le chiavi e reindicizza l'array 0, 1, 2, …, rompendo l'associazione.

Ricorri invece a sort() solo quando l'array è un semplice elenco e le chiavi sono mere posizioni di cui non ti importa.

Esempi di asort()

Ecco alcuni esempi che illustrano come usare la funzione asort() in PHP:

  1. Ordinamento di un array di string con asort():

Esempi di asort()

php— editable, runs on the server
  1. Ordinamento di un array di interi con asort():

Ordinamento di un array di interi con asort()

php— editable, runs on the server
  1. Ordinamento di un array associativo con asort():

PHP: ordinamento di un array associativo con asort()

php— editable, runs on the server

Errori comuni

  • Usa SORT_NUMERIC per string numeriche. Con il SORT_REGULAR predefinito, valori come "10" e "9" potrebbero essere confrontati come string, mettendo "10" prima di "9". Passa SORT_NUMERIC quando i valori sono numeri (anche se memorizzati come string) per garantire un ordinamento numerico.
  • L'ordinamento non è stabile prima di PHP 8.0. In PHP 8.0 e versioni successive, gli elementi uguali mantengono il loro ordine relativo originale; nelle versioni precedenti l'ordine era indefinito.
  • Restituisce un boolean, non l'array. Poiché l'ordinamento avviene in place, tratta la variabile originale come risultato.

Funzioni di ordinamento correlate

PHP offre una famiglia di funzioni per l'ordinamento degli array, ognuna delle quali preserva (o scarta) le chiavi in modo diverso e ordina per valore o per chiave:

  • sort() — ordina per valore crescente, reindicizza le chiavi.
  • rsort() — ordina per valore decrescente, reindicizza le chiavi.
  • arsort() — come asort() ma in ordine decrescente, mantenendo le associazioni chiave-valore.
  • ksort() / krsort() — ordina per chiave in ordine crescente / decrescente.
  • usort() / uasort() — ordina con una callback di confronto personalizzata.

Consulta la panoramica Sorting Arrays per un confronto affiancato.

Conclusione

La funzione asort() è uno strumento utile per ordinare array in PHP in base ai loro valori in ordine crescente, mantenendo le associazioni chiave-valore. Eccelle ogni volta che le chiavi hanno un significato — ordinare un array associativo di nomi e punteggi, id e prezzi e così via — dove la semplice sort() scarterebbe quelle chiavi. Comprendendo la sua sintassi, i tipi di ordinamento e le funzioni di ordinamento correlate, puoi scegliere lo strumento giusto per ogni attività di ordinamento e scrivere codice PHP più pulito.

Esercitazione

Pratica
Cosa fa la funzione asort() in PHP?
Cosa fa la funzione asort() in PHP?
Was this page helpful?