W3docs

krsort()

Ordenar arrays en PHP es una tarea común. La función krsort() permite ordenar un array por clave en orden inverso de forma sencilla.

Función PHP krsort(): Ordenar un Array por Clave en Orden Inverso

Ordenar arrays en PHP es una tarea común, especialmente cuando se trabaja con grandes cantidades de datos. La función PHP krsort() es una función extremadamente útil que permite a los desarrolladores ordenar un array por clave en orden inverso. Esta función es muy potente y puede ahorrar mucho tiempo y esfuerzo al ordenar arrays. En este artículo, repasaremos en detalle la funcionalidad de la función krsort() y mostraremos cómo utilizarla en diferentes escenarios.

¿Qué es krsort()?

La función krsort() es una función integrada de PHP que ordena un array en orden inverso basándose en sus claves, preservando la asociación entre cada clave y su valor. El nombre proviene de key reverse sort (ordenación inversa por clave). Es la contraparte descendente de ksort(), que ordena por clave en orden ascendente.

Dado que ordena por clave (no por valor), krsort() es más útil con arrays asociativos o arrays con claves numéricas explícitas — por ejemplo, ordenar registros indexados por ID, año o prioridad para que la clave más grande aparezca primero.

Dos aspectos importantes a tener en cuenta:

  • krsort() ordena el array en el lugar y devuelve true en caso de éxito (nunca devuelve el array ordenado), por lo que se llama directamente sobre la variable.
  • Opera sobre las claves del array. Para ordenar por valor, usa arsort() (mantiene las claves) o rsort() (reindexa).

Sintaxis de krsort()

La sintaxis de la función krsort() es la siguiente:

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

Aquí, $array es el array a ordenar (pasado por referencia, por lo que el array original se modifica), y $flags es un parámetro opcional que controla cómo se comparan las claves. La función siempre devuelve true. Los valores posibles de $flags son:

  • SORT_REGULAR: Este es el valor por defecto. La función ordena los elementos de forma normal, sin cambiar sus tipos de datos.
  • SORT_NUMERIC: La función ordena los elementos numéricamente, es decir, tratándolos como números.
  • SORT_STRING: La función ordena los elementos como cadenas de texto.
  • SORT_LOCALE_STRING: La función ordena los elementos como cadenas de texto, basándose en la configuración regional actual.
  • SORT_NATURAL: La función ordena los elementos en orden natural, es decir, tratándolos como cadenas pero teniendo en cuenta sus valores numéricos.
  • SORT_FLAG_CASE: Este indicador puede combinarse con SORT_STRING o SORT_NATURAL para ordenar las cadenas sin distinguir mayúsculas de minúsculas.

Ejemplos de uso de krsort()

Veamos algunos ejemplos de cómo utilizar la función krsort().

Ejemplo 1: Ordenar un array en orden inverso basándose en sus claves

php— editable, runs on the server

Salida:

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

En este ejemplo, tenemos un array con cuatro elementos. Ordenamos el array en orden inverso basándonos en sus claves usando la función krsort(). La salida muestra que el array ha sido ordenado en orden descendente según sus claves.

Ejemplo 2: Ordenar un array en orden inverso basándose en sus claves, numéricamente

php— editable, runs on the server

Salida:

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

Aquí las claves son cadenas numéricas. Ordenar con el indicador SORT_NUMERIC las compara como números, por lo que el array queda ordenado desde la clave más alta (4) hasta la más baja (1). Ten en cuenta que PHP convierte automáticamente las claves de cadena con formato entero como "1" a enteros, por lo que SORT_REGULAR daría el mismo resultado aquí — el indicador SORT_NUMERIC importa cuando las claves podrían compararse como cadenas (donde "10" se ordena antes que "9").

Ejemplo 3: Ordenar un array en orden inverso basándose en sus claves, sin distinguir mayúsculas de minúsculas

php— editable, runs on the server

Salida:

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

En este ejemplo, tenemos un array con cuatro elementos donde las claves son cadenas de texto, algunas en mayúsculas. Ordenamos el array en orden inverso basándonos en sus claves, sin distinguir mayúsculas de minúsculas, usando la función krsort() con los indicadores SORT_STRING y SORT_FLAG_CASE. La salida muestra que el array ha sido ordenado en orden descendente según sus claves, ignorando las mayúsculas y minúsculas.

Funciones de ordenación relacionadas

PHP ofrece una familia completa de funciones para ordenar arrays. Elegir la adecuada depende de dos preguntas: ¿ordenas por clave o por valor, y deseas orden ascendente o descendente?

FunciónOrdena porOrdenMantiene asociación de claves
ksort()ClaveAscendente
krsort()ClaveDescendente
asort()ValorAscendente
arsort()ValorDescendente
sort()ValorAscendenteNo (reindexa)
rsort()ValorDescendenteNo (reindexa)
uksort()ClaveCallback personalizado

Si tu lógica de ordenación es demasiado específica para los indicadores estándar — por ejemplo, ordenar claves por longitud de cadena — recurre a uksort(), que te permite proporcionar tu propia función de comparación.

Conclusión

La función krsort() ordena un array por sus claves en orden descendente, en el lugar, preservando cada par clave-valor. Acepta un argumento opcional de indicador de ordenación para que puedas comparar claves numéricamente, como cadenas, de forma natural o sin distinguir mayúsculas de minúsculas. Usa krsort() cuando tengas un conjunto de datos indexado — IDs, años, prioridades — que quieras presentar desde la clave más alta hasta la más baja, y utiliza sus funciones relacionadas ksort() y arsort() cuando necesites un orden diferente o quieras ordenar por valor.

Practice

Práctica
¿Qué hace la función PHP krsort()?
¿Qué hace la función PHP krsort()?
Was this page helpful?