Menu
Coddy logo textTech

Ordenação por Ordem Natural

Parte da seção Lógica & Fluxo do Journey de PHP da Coddy — lição 24 de 68.

Embora as funções de ordenação padrão do PHP funcionem bem para a maioria dos casos, elas podem produzir resultados inesperados ao ordenar strings que contêm números. A função natsort() resolve esse problema usando um algoritmo de "ordenação natural" que ordena strings da maneira que os humanos naturalmente esperariam.

Considere este exemplo com nomes de arquivos:

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

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

// Redefine o array
$files = ["file1.txt", "file10.txt", "file2.txt", "file20.txt"];

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

A diferença é crucial: o sort() regular compara strings caractere por caractere, então "file10.txt" vem antes de "file2.txt" porque "1" vem antes de "2" no ASCII. No entanto, o natsort() reconhece as partes numéricas e as ordena numericamente, colocando "file2.txt" antes de "file10.txt" como você esperaria naturalmente.

Como outras funções de ordenação do PHP, natsort() modifica o array original diretamente. Isso a torna particularmente útil para organizar listagens de arquivos, números de versão ou quaisquer dados onde as strings contenham números incorporados que devem ser ordenados numericamente em vez de alfabeticamente.

quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

challenge icon

Desafio

Fácil

Você receberá uma entrada: um array de números de versão de software em formato JSON. Leia a entrada, converta a string JSON em um array, use natsort() para ordenar os números de versão em ordem natural e imprima o array ordenado usando print_r().

Formato de entrada: Uma linha contendo um array JSON de strings de versão (exemplo: ["v1.10","v1.2","v1.20","v1.3"])

Saída esperada: O array ordenado em ordem natural, exibido usando print_r()

Folha de consulta

A função natsort() ordena strings usando "ordenação natural" - a maneira como os humanos naturalmente esperam que strings com números sejam ordenadas.

O sort() regular compara strings caractere por caractere, enquanto o natsort() reconhece partes numéricas e as ordena numericamente:

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

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

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

Como outras funções de ordenação do PHP, a natsort() modifica o array original diretamente. Ela é particularmente útil para listagens de arquivos, números de versão ou quaisquer dados com números incorporados que devam ser ordenados numericamente.

Experimente você mesmo

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

// Converter string JSON para array
$versions = (array)json_decode($input, true);

// TODO: Escreva seu código abaixo para ordenar o array usando natsort()


// Exibir o array ordenado
print_r($versions);
?>
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica & Fluxo