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.
Sfida
FacileRiceverai 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);
?>Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Funzioni avanzate
Funzioni anonimeClosure e 'use'Funzioni frecciaFunzioni callbackUso di 'call_user_func'Funzioni variabiliPassaggio per riferimentoFunzioni ricorsiveRiepilogo: carrellata di funzioni4Array multidimensionali
Creare un array 2DAccedere agli elementi di un array 2DModificare gli elementi di un array 2DIterare con cicli annidatiArray associativi 2DRipasso: esercizio con una griglia semplice2Manipolazioni avanzate degli array
Aggiungere con 'array_push'Rimuovere con 'array_pop'Aggiungere con 'array_unshift'Rimuovere con 'array_shift'Unire array indicizzatiUnire array associativiEstrarre con 'array_slice'Valori con 'in_array'Chiavi con 'array_search'Riepilogo: esercizio playlist3Ordinare gli array
Ordina gli array indicizzati in ordine crescenteOrdina gli array indicizzati in ordine decrescenteOrdina gli array associativi per valoreOrdina gli array associativi per chiaveOrdinamento naturaleOrdinamento personalizzato con 'usort'Ripasso: ordinamento della classificaEsercitati da solo: Compilatore PHP online