W3docs

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 => valor alfabeticamente 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âmetroObrigatórioDescrição
$arraySimO array a ser ordenado. É passado por referência e modificado no local.
$sorting_typeNãoUma 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:

FlagComportamento
SORT_REGULARCompara itens normalmente (padrão). Strings numéricas são comparadas como números.
SORT_NUMERICCompara itens numericamente.
SORT_STRINGCompara itens como strings.
SORT_NATURALCompara itens como strings usando "ordenação natural" (como natsort()).
SORT_LOCALE_STRINGCompara 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:

php— editable, runs on the server

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:

php— editable, runs on the server

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():

php— editable, runs on the server

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:

php— editable, runs on the server

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]

Prática

Prática
Qual é o propósito da função ksort() no PHP?
Qual é o propósito da função ksort() no PHP?
Was this page helpful?