Menu
Coddy logo textTech

Ordenación por orden natural

Parte de la sección Lógica y Flujo del Journey de PHP de Coddy — lección 24 de 68.

Si bien las funciones de ordenación estándar de PHP funcionan bien para la mayoría de los casos, pueden producir resultados inesperados al ordenar cadenas que contienen números. La función natsort() resuelve este problema utilizando un algoritmo de "ordenación natural" que ordena las cadenas de la manera que los humanos esperarían naturalmente.

Considera este ejemplo con nombres de archivos:

<?php
$files = ["file1.txt", "file10.txt", "file2.txt", "file20.txt"];

// sort() regular produce: file1.txt, file10.txt, file2.txt, file20.txt
sort($files);
print_r($files);

// Reiniciar el 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 diferencia es crucial: el sort() regular compara cadenas carácter por carácter, por lo que "file10.txt" va antes que "file2.txt" porque "1" va antes que "2" en ASCII. Sin embargo, natsort() reconoce las partes numéricas y las ordena numéricamente, colocando "file2.txt" antes de "file10.txt" como esperarías naturalmente.

Al igual que otras funciones de ordenación de PHP, natsort() modifica el array original directamente. Esto lo hace particularmente útil para organizar listados de archivos, números de versión o cualquier dato donde las cadenas contengan números incrustados que deban ordenarse numéricamente en lugar de alfabéticamente.

quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

challenge icon

Desafío

Fácil

Recibirás una entrada: un array de números de versión de software en formato JSON. Lee la entrada, convierte la cadena JSON en un array, utiliza natsort() para ordenar los números de versión en orden natural y muestra el array ordenado utilizando print_r().

Formato de entrada: Una línea que contiene un array JSON de cadenas de versión (ejemplo: ["v1.10","v1.2","v1.20","v1.3"])

Resultado esperado: El array ordenado en orden natural, mostrado mediante print_r()

Hoja de referencia

La función natsort() ordena cadenas utilizando el "orden natural", la forma en que los humanos esperan naturalmente que se ordenen las cadenas con números.

El sort() regular compara cadenas carácter por carácter, mientras que natsort() reconoce las porciones numéricas y las ordena numéricamente:

$files = ["file1.txt", "file10.txt", "file2.txt", "file20.txt"];

// sort() regular produce: file1.txt, file10.txt, file2.txt, file20.txt
sort($files);

// natsort() produce: file1.txt, file2.txt, file10.txt, file20.txt
natsort($files);
print_r($files);

Al igual que otras funciones de ordenación de PHP, natsort() modifica el array original directamente. Es particularmente útil para listados de archivos, números de versión o cualquier dato con números incrustados que deban ordenarse numéricamente.

Pruébalo tú mismo

<?php
// Leer la entrada
$input = fgets(STDIN);

// Convertir la cadena JSON a un array
$versions = (array)json_decode($input, true);

// TODO: Escribe tu código a continuación para ordenar el array usando natsort()


// Mostrar el array ordenado
print_r($versions);
?>
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y Flujo