Ordinamento naturale
Fa parte della sezione Logica e flusso del percorso PHP di Coddy. Lezione 24 di 68.
Sebbene le funzioni di ordinamento standard di PHP funzionino bene nella maggior parte dei casi, possono produrre risultati inaspettati quando ordinano stringhe che contengono numeri. La funzione natsort() risolve questo problema utilizzando un algoritmo di «ordinamento naturale» che ordina le stringhe nel modo che le persone si aspetterebbero naturalmente.
Considera questo esempio con nomi di file:
<?php
$files = ["file1.txt", "file10.txt", "file2.txt", "file20.txt"];
// Il normale sort() produce: file1.txt, file10.txt, file2.txt, file20.txt
sort($files);
print_r($files);
// Reimposta l'array
$files = ["file1.txt", "file10.txt", "file2.txt", "file20.txt"];
// natsort() produce: file1.txt, file2.txt, file10.txt, file20.txt
natsort($files);
print_r($files);
?>La differenza è fondamentale: sort() ordina le stringhe carattere per carattere, quindi "file10.txt" viene prima di "file2.txt" perché "1" precede "2" in ASCII. Tuttavia, natsort() riconosce le parti numeriche e le ordina numericamente, collocando "file2.txt" prima di "file10.txt", come ti aspetteresti naturalmente.
Come altre funzioni di ordinamento di PHP, natsort() modifica direttamente l’array originale. Questo la rende particolarmente utile per organizzare elenchi di file, numeri di versione o qualsiasi dato in cui le stringhe contengono numeri incorporati che dovrebbero essere ordinati numericamente anziché alfabeticamente.
Sfida
FacileRiceverai un input: un array di numeri di versione software in formato JSON. Leggi l'input, converti la stringa JSON in un array, usa natsort() per ordinare i numeri di versione in ordine naturale e stampa l'array ordinato usando print_r().
Formato dell'input: Una riga contenente un array JSON di stringhe di versione (esempio: ["v1.10","v1.2","v1.20","v1.3"])
Output previsto: L'array ordinato in ordine naturale, visualizzato usando print_r()
Provalo tu
<?php
// Leggi l'input
$input = fgets(STDIN);
// Converti la stringa JSON in un array
$versions = (array)json_decode($input, true);
// TODO: Scrivi il tuo codice qui sotto per ordinare l'array usando natsort()
// Stampa l'array ordinato
print_r($versions);
?>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