Menu
Coddy logo textTech

Ordina gli array associativi per valore

Fa parte della sezione Logica e flusso del percorso PHP di Coddy. Lezione 22 di 68.

Quando lavori con array associativi, spesso devi ordinarli in base ai valori preservando le relazioni chiave-valore. PHP fornisce due funzioni specializzate a questo scopo: asort() per l'ordine crescente e arsort() per l'ordine decrescente.

Ecco come funziona asort() per ordinare i valori in ordine crescente:

<?php
$students = [
    "Alice" => 85,
    "Bob" => 92,
    "Charlie" => 78,
    "Diana" => 96
];

asort($students);
print_r($students);
// Output: Array ( [Charlie] => 78 [Alice] => 85 [Bob] => 92 [Diana] => 96 )
?>

Nota come i voti siano ora ordinati dal più basso al più alto, ma il nome di ogni studente rimanga correttamente associato al suo voto. Questo è il vantaggio principale di asort() rispetto a sort() normale. Mantiene l'associazione tra chiavi e valori.

Per l'ordine decrescente, arsort() funziona in modo simile, ma dispone i valori dal più alto al più basso:

<?php
arsort($students);
print_r($students);
// Output: Array ( [Diana] => 96 [Bob] => 92 [Alice] => 85 [Charlie] => 78 )
?>

Entrambe le funzioni modificano direttamente l’array originale, proprio come le loro controparti per gli array indicizzati. Questo le rende perfette per organizzare dati come i voti degli studenti, i prezzi dei prodotti o qualsiasi situazione in cui sia necessario ordinare per valore mantenendo intatte le coppie chiave-valore.

challenge icon

Sfida

Facile

Riceverai un input: un array associativo di nomi di dipendenti e dei relativi stipendi in formato JSON. Leggi l'input, converti la stringa JSON in un array, usa arsort() per ordinare i dipendenti in base allo stipendio in ordine decrescente (dal più alto al più basso) e stampa l'array ordinato usando print_r().

Formato dell'input: Una riga contenente un oggetto JSON con i nomi dei dipendenti come chiavi e gli stipendi come valori (esempio: {"John":45000,"Sarah":52000,"Mike":38000,"Lisa":61000})

Output previsto: L'array associativo ordinato in ordine decrescente in base ai valori degli stipendi, visualizzato usando print_r()

Provalo tu

<?php
// Leggi l'input
$input = fgets(STDIN);

// Converti JSON in un array associativo
$employees = (array)json_decode($input, true);

// TODO: Scrivi il tuo codice qui sotto per ordinare l'array per stipendio in ordine decrescente


// Stampa l'array ordinato
print_r($employees);
?>
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore PHP online