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 retornatrueem 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) oursort()(reindexando).
Sintaxe de krsort()
A sintaxe da função krsort() é a seguinte:
krsort(array &$array, int $flags = SORT_REGULAR): trueAqui, $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 comSORT_STRINGouSORT_NATURALpara 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
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
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
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ção | Ordena por | Ordem | Mantém associação de chave |
|---|---|---|---|
ksort() | Chave | Crescente | Sim |
krsort() | Chave | Decrescente | Sim |
asort() | Valor | Crescente | Sim |
arsort() | Valor | Decrescente | Sim |
sort() | Valor | Crescente | Não (reindexado) |
rsort() | Valor | Decrescente | Não (reindexado) |
uksort() | Chave | Callback personalizado | Sim |
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.