W3docs

krsort()

Saiba como usar a função krsort() do PHP para ordenar arrays pela chave em ordem decrescente, com exemplos práticos e flags disponíveis.

Função PHP krsort(): Ordenar um Array pela Chave em Ordem Decrescente

Ordenar arrays em PHP é uma tarefa comum, especialmente quando se trabalha com grandes volumes de dados. A função PHP krsort() é extremamente útil e permite que os desenvolvedores ordenem um array pela chave em ordem decrescente. Essa função é muito poderosa e pode economizar tempo e esforço ao ordenar arrays. Neste artigo, vamos analisar em detalhes a funcionalidade da função krsort() e demonstrar como utilizá-la em diferentes cenários.

O que é krsort()?

A função krsort() é uma função nativa do PHP que ordena um array em ordem decrescente com base nas suas chaves, preservando a associação entre cada chave e seu valor. O nome significa key reverse sort (ordenação reversa por chave). É a contraparte descendente de ksort(), que ordena pela chave em ordem crescente.

Por ordenar pela chave (e não pelo valor), krsort() é mais útil com arrays associativos ou arrays com chaves numéricas explícitas — por exemplo, ordenar registros indexados por ID, ano ou prioridade de forma que a maior chave apareça primeiro.

Dois pontos importantes a ter em mente:

  • krsort() ordena o array no próprio lugar e retorna true em caso de sucesso (nunca retorna o array ordenado), portanto, a função é chamada diretamente sobre a variável.
  • Ela opera sobre as chaves do array. Para ordenar pelo valor, use arsort() (mantendo as chaves) ou rsort() (reindexando).

Sintaxe de krsort()

A sintaxe da função krsort() é a seguinte:

krsort(array &$array, int $flags = SORT_REGULAR): true

Aqui, $array é o array a ser ordenado (passado por referência, portanto o array original é modificado), e $flags é um parâmetro opcional que controla como as chaves são comparadas. A função sempre retorna true. Os valores possíveis para $flags são:

  • SORT_REGULAR: Este é o valor padrão. A função ordena os elementos normalmente, sem alterar seus tipos de dados.
  • SORT_NUMERIC: A função ordena os elementos numericamente, ou seja, tratando-os como números.
  • SORT_STRING: A função ordena os elementos como strings.
  • SORT_LOCALE_STRING: A função ordena os elementos como strings, com base na configuração de locale atual.
  • SORT_NATURAL: A função ordena os elementos em ordem natural, ou seja, tratando-os como strings, mas levando em conta seus valores numéricos.
  • SORT_FLAG_CASE: Esse flag pode ser combinado com SORT_STRING ou SORT_NATURAL para ordenar as strings sem diferenciar maiúsculas de minúsculas.

Exemplos de uso de krsort()

Agora, vejamos alguns exemplos de como usar a função krsort().

Exemplo 1: Ordenando um array em ordem decrescente com base nas suas chaves

php— editable, runs on the server

Saída:

Array
(
    [d] => date
    [c] => cherry
    [b] => banana
    [a] => apple
)

Neste exemplo, temos um array com quatro elementos. Estamos ordenando o array em ordem decrescente com base nas suas chaves usando a função krsort(). A saída mostra que o array foi ordenado em ordem descendente com base nas suas chaves.

Exemplo 2: Ordenando um array em ordem decrescente com base nas suas chaves, numericamente

php— editable, runs on the server

Saída:

Array
(
    [4] => cherry
    [3] => date
    [2] => apple
    [1] => banana
)

Aqui as chaves são strings numéricas. Ordenar com o flag SORT_NUMERIC as compara como números, de modo que o array termina ordenado da chave mais alta (4) até a mais baixa (1). Note que o PHP converte automaticamente chaves de string similares a inteiros, como "1", para inteiros, então SORT_REGULAR daria o mesmo resultado aqui — o flag SORT_NUMERIC importa quando as chaves poderiam ser comparadas como strings (onde "10" ordenaria antes de "9").

Exemplo 3: Ordenando um array em ordem decrescente com base nas suas chaves, sem diferenciar maiúsculas de minúsculas

php— editable, runs on the server

Saída:

Array
(
    [d] => date
    [C] => cherry
    [b] => banana
    [A] => apple
)

Neste exemplo, temos um array com quatro elementos onde as chaves são strings, algumas delas em maiúsculas. Estamos ordenando o array em ordem decrescente com base nas suas chaves, sem diferenciar maiúsculas de minúsculas, usando a função krsort() com os flags SORT_STRING e SORT_FLAG_CASE. A saída mostra que o array foi ordenado em ordem descendente com base nas suas chaves, ignorando a capitalização das strings.

Funções de ordenação relacionadas

O PHP oferece uma família completa de funções para ordenar arrays. Escolher a correta resume-se a duas perguntas: você ordena pela chave ou pelo valor, e deseja ordem crescente ou decrescente?

FunçãoOrdena porOrdemMantém associação de chave
ksort()ChaveCrescenteSim
krsort()ChaveDecrescenteSim
asort()ValorCrescenteSim
arsort()ValorDecrescenteSim
sort()ValorCrescenteNão (reindexado)
rsort()ValorDecrescenteNão (reindexado)
uksort()ChaveCallback personalizadoSim

Se sua lógica de ordenação for específica demais para os flags padrão — por exemplo, ordenar chaves pelo comprimento da string — recorra a uksort(), que permite fornecer sua própria função de comparação.

Conclusão

A função krsort() ordena um array pelas suas chaves em ordem decrescente, no próprio lugar, preservando cada par chave-valor. Ela aceita um argumento opcional de flag de ordenação para que você possa comparar chaves numericamente, como strings, de forma natural ou sem diferenciar maiúsculas de minúsculas. Use krsort() sempre que tiver um conjunto de dados com chaves — IDs, anos, prioridades — que você deseja apresentar da chave mais alta para a mais baixa, e use os familiares ksort() e arsort() quando precisar de uma ordem diferente ou quiser ordenar pelo valor.

Practice

Prática
O que a função PHP krsort() faz?
O que a função PHP krsort() faz?
Was this page helpful?