Menu
Coddy logo textTech

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.

challenge icon

Sfida

Facile

Riceverai 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);
?>
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