ksort()
Aprenda a usar a função ksort() do PHP para ordenar arrays por chave em ordem crescente, com exemplos práticos e flags de ordenação.
PHP Function: Array ksort()
A função PHP ksort() ordena um array pelas suas chaves em ordem crescente, mantendo cada chave associada ao seu valor original. É o equivalente baseado em chaves do asort(), que ordena por valor, e o oposto do krsort(), que ordena as chaves em ordem decrescente.
Esta página aborda quando usar ksort(), sua sintaxe, parâmetros e valor de retorno, as flags de tipo de ordenação disponíveis e vários exemplos práticos (incluindo o erro comum de ordenar chaves que são strings numéricas).
Quando usar ksort()
Use ksort() quando as chaves têm significado e você deseja que o array seja ordenado por elas — por exemplo:
- Ordenar um array associativo de pares
nome => valoralfabeticamente pelo nome. - Colocar entradas de configuração ou cabeçalhos HTTP em uma ordem previsível e determinística.
- Ordenar dados indexados por ano, ID ou categoria antes de iterá-los ou renderizá-los.
Como ksort() preserva a associação chave/valor, é a ferramenta certa quando reindexar o array (como o simples sort() faria) perderia informação. Consulte a visão geral de Ordenação de Arrays para uma comparação de todas as funções de ordenação do PHP.
Sintaxe
ksort($array, $sorting_type);Parâmetros
A função ksort() recebe dois parâmetros:
| Parâmetro | Obrigatório | Descrição |
|---|---|---|
$array | Sim | O array a ser ordenado. É passado por referência e modificado no local. |
$sorting_type | Não | Uma flag que controla como as chaves são comparadas (veja a tabela abaixo). O padrão é SORT_REGULAR. |
A flag $sorting_type aceita as seguintes constantes:
| Flag | Comportamento |
|---|---|
SORT_REGULAR | Compara itens normalmente (padrão). Strings numéricas são comparadas como números. |
SORT_NUMERIC | Compara itens numericamente. |
SORT_STRING | Compara itens como strings. |
SORT_NATURAL | Compara itens como strings usando "ordenação natural" (como natsort()). |
SORT_LOCALE_STRING | Compara itens como strings, com base no locale atual. |
Nota: ksort() modifica o array original no local — não retorna um novo array ordenado. A ordem original das chaves é perdida após a chamada.
Valor de Retorno
A função ksort() retorna um boolean: true em caso de sucesso e false em caso de falha.
Exemplo 1: Ordenando um Array Associativo por Chave
Aqui as chaves são nomes de pessoas, então ksort() ordena o array alfabeticamente pelo nome (Ben, Joe, Peter), mantendo cada nome associado à idade correta:
Saída:
Array
(
[Ben] => 37
[Joe] => 43
[Peter] => 35
)Exemplo 2: Ordenando um Array Associativo por Chave em Ordem Inversa
Para ordenar as chaves em ordem decrescente, use krsort() — funciona exatamente como ksort(), mas inverte o resultado:
Saída:
Array
(
[Peter] => 35
[Joe] => 43
[Ben] => 37
)Exemplo 3: Ordenando um Array Indexado por Chave
Um array indexado já possui chaves 0, 1, 2, 3 em ordem, então ordená-lo por chave deixa os elementos inalterados. Isso mostra que ksort() ordena chaves, não valores — para ordenar os valores em si, use sort():
Saída:
Array
(
[0] => red
[1] => green
[2] => blue
[3] => yellow
)Exemplo 4: Ordenando um Array Indexado por Chave em Ordem Inversa
Inverter a ordem das chaves de um array indexado com krsort() mantém cada valor com sua chave numérica original, fazendo os elementos aparecerem na ordem de inserção inversa:
Saída:
Array
(
[3] => yellow
[2] => blue
[1] => green
[0] => red
)Armadilha: chaves com strings numéricas e a flag de ordenação
Uma surpresa comum é ordenar um array cujas chaves são strings numéricas. Por padrão (SORT_REGULAR), o PHP as compara como números, então "10" vem após "2". Passando SORT_STRING, elas são comparadas caractere por caractere, colocando "10" antes de "2":
<?php
$data = ["10" => "a", "1" => "b", "2" => "c"];
ksort($data); // SORT_REGULAR (numeric)
print_r($data);
ksort($data, SORT_STRING); // string comparison
print_r($data);Saída:
Array
(
[1] => b
[2] => c
[10] => a
)
Array
(
[1] => b
[10] => a
[2] => c
)Escolha a flag $sorting_type que corresponde a como você deseja que as chaves sejam interpretadas.
Conclusão
A função ksort() ordena um array PHP pelas suas chaves em ordem crescente, no local, preservando cada par chave/valor. Use-a quando as chaves são significativas e a ordem importa; use krsort() para ordem decrescente, asort() / arsort() para ordenar por valor mantendo as chaves, ou sort() quando quiser descartar as chaves completamente. Escolha a flag $sorting_type correta — especialmente quando suas chaves são strings numéricas — para obter a comparação esperada.
graph TD
A[PHP array] -->|ksort| B[Sorted PHP array]