W3docs

natcasesort()

Guia completo sobre a função natcasesort() no PHP: ordenação natural sem diferenciação de maiúsculas e minúsculas, sintaxe e exemplos.

Introdução

natcasesort() ordena um array usando um algoritmo de ordem natural com comparação sem diferenciação de maiúsculas e minúsculas. "Ordem natural" significa que ordena strings da forma como um ser humano faria — assim, img10 vem depois de img2, e não antes, como uma ordenação alfabética simples faria.

Esta página aborda o que é a ordenação natural, como natcasesort() difere de natsort() e sort(), e os detalhes sobre chaves e valores de retorno.

Sintaxe

natcasesort(array &$array): bool

A função recebe o array por referência, ordena-o no lugar e retorna true em caso de sucesso. Não é necessário atribuir o resultado de volta — o array passado é modificado diretamente.

DetalheComportamento
OrdenaNo lugar (por referência)
ChavesPreservadas — pares chave/valor permanecem vinculados
OrdemCrescente, natural, sem diferenciação de maiúsculas/minúsculas
Retornabool (true em caso de sucesso)

Por que a ordem natural é importante

Uma ordenação alfabética regular compara strings caractere por caractere, portanto "img10" é ordenado antes de "img2" porque 1 é menor que 2. Isso raramente é o que uma pessoa espera quando nomes de arquivos ou rótulos contêm números. A ordem natural trata as sequências de dígitos como números, fornecendo o resultado amigável ao ser humano.

Exemplo básico

php— editable, runs on the server

Saída:

Array
(
    [3] => Boston
    [2] => Chicago
    [1] => Los Angeles
    [0] => New York
    [4] => San Francisco
)

Observe que as chaves (3, 2, 1, 0, 4) não são renumeradas — cada valor mantém sua chave original. Se você precisar redefinir as chaves para 0, 1, 2…, use sort() em vez disso, ou processe o resultado com array_values().

natcasesort() vs natsort() vs sort()

A diferença entre essas três funções fica mais evidente com strings de casos mistos que contêm números:

<?php

$files = array("IMG10.png", "img12.png", "img2.png", "IMG1.png", "img10.png");

$a = $files;
natcasesort($a);   // natural + case-insensitive
print_r($a);

Saída:

Array
(
    [3] => IMG1.png
    [2] => img2.png
    [0] => IMG10.png
    [4] => img10.png
    [1] => img12.png
)

Com natsort() (com diferenciação de maiúsculas e minúsculas), os mesmos dados são ordenados de forma diferente, porque letras maiúsculas são comparadas como menores do que as minúsculas — portanto, IMG10 aparece antes de img2:

Array
(
    [3] => IMG1.png
    [0] => IMG10.png
    [2] => img2.png
    [4] => img10.png
    [1] => img12.png
)

E sort() (regular, não natural) reindexa as chaves e coloca img10/img12 antes de img2:

Array
(
    [0] => IMG1.png
    [1] => IMG10.png
    [2] => img10.png
    [3] => img12.png
    [4] => img2.png
)

Use natcasesort() quando a ordem deve corresponder à intuição humana e a capitalização deve ser ignorada — por exemplo, ao listar nomes de arquivos enviados por usuários onde alguém pode ter digitado IMG ou img.

Armadilhas

  • Retorna um bool, não o array ordenado. $sorted = natcasesort($arr); define $sorted como true, não como seus dados. Os dados estão em $arr.
  • As chaves são preservadas. Isso pode quebrar código que assume chaves baseadas em 0 após a ordenação. Use array_values($arr) se precisar de uma lista limpa.
  • Valores não string são comparados como strings. Números, booleanos etc. são convertidos para string antes da comparação.

Funções relacionadas

  • natsort() — ordem natural, com diferenciação de maiúsculas e minúsculas.
  • sort() — ordenação crescente regular, reindexa as chaves.
  • asort() — ordenação crescente que preserva as chaves (não natural).
  • usort() — ordenação com seu próprio callback de comparação.

Disponível desde PHP 4.0.0.

Prática

Prática
Qual é a função de 'natcasesort()' no PHP?
Qual é a função de 'natcasesort()' no PHP?
Was this page helpful?