W3docs

Dominando arsort() en PHP: Ordenar Arrays en Orden Descendente por Valor

Aprende a usar arsort() de PHP para ordenar arrays asociativos en orden descendente por valor conservando las asociaciones de claves, con ejemplos.

arsort() ordena un array asociativo en orden descendente por valor manteniendo cada valor ligado a su clave original. La "a" viene de associative (se conservan las asociaciones de claves) y la "r" viene de reverse (el valor más grande primero). Esta página cubre su sintaxis, los indicadores de ordenación opcionales, ejemplos ejecutables y cómo arsort() se diferencia de las demás funciones de ordenación de PHP.

Usa arsort() siempre que las claves tengan un significado que no debes perder — un mapa de nombres de productos a precios, nombres de usuario a puntuaciones o categorías a recuentos — y quieras los valores más altos al principio.

Sintaxis

arsort(array &$array, int $flags = SORT_REGULAR): true
  • $array — el array a ordenar. Se pasa por referencia, por lo que arsort() reordena el array en su lugar en vez de devolver uno nuevo. La función en sí devuelve true.
  • $flags — opcional. Controla cómo se comparan los valores. Por defecto es SORT_REGULAR.

Indicadores de ordenación

El argumento $flags cambia cómo se comparan dos valores:

  • SORT_REGULAR — compara los elementos de forma normal, sin cambiar sus tipos (el valor por defecto).
  • SORT_NUMERIC — compara los elementos como números.
  • SORT_STRING — compara los elementos como strings.
  • SORT_NATURAL — compara strings usando un algoritmo de "orden natural" (de modo que "img10" se ordena después de "img2").
  • SORT_FLAG_CASE — combínalo con SORT_STRING o SORT_NATURAL usando | para que la comparación de strings no distinga entre mayúsculas y minúsculas.

Elegir el indicador correcto es importante: con el SORT_REGULAR predeterminado, los strings numéricos "10" y "9" se comparan numéricamente, pero en un array mixto los resultados pueden ser sorprendentes. Usa SORT_NUMERIC o SORT_STRING de forma explícita cuando los tipos de valores sean conocidos.

Ordenar un array asociativo

php— editable, runs on the server

Este código generará la siguiente salida:

orange - 3
apple - 2
banana - 1

Los valores ahora están ordenados de mayor a menor y, de forma fundamental, cada nombre de fruta sigue apuntando a su propio recuento — arsort() conservó el par clave/valor. Esto es exactamente lo que lo hace adecuado para cosas como tablas de clasificación o listas de precios.

Ordenar con un indicador

php— editable, runs on the server

Este código generará la siguiente salida:

1 - 5
4 - 4
0 - 3
2 - 2
3 - 1

El array $numbers se ordena en orden descendente por valor usando SORT_NUMERIC. Fíjate cómo las claves numéricas originales se mueven junto con sus valores en lugar de reindexarse 0, 1, 2…. Si no necesitas conservar esas claves, usa rsort(), que vuelve a numerar el array.

arsort() vs. las demás funciones de ordenación

Las funciones de ordenación de arrays de PHP forman una familia coherente. Saber cuál usar se reduce a dos preguntas: ¿ordenar por valor o por clave? y ¿conservar las claves o no?

FunciónOrdena porOrdenConserva la asociación de claves
asort()valorascendente
arsort()valordescendente
sort()valorascendenteno (reindexado)
rsort()valordescendenteno (reindexado)
ksort()claveascendente
krsort()clavedescendente

Así, arsort() es el miembro "descendente, por valor, conserva claves" de la familia — es la imagen especular de asort().

Errores comunes

  • Devuelve true, no el array ordenado. Escribir $sorted = arsort($array); asigna true a $sorted. La ordenación ocurre sobre el $array original en su lugar.
  • Las claves numéricas no se reindexan. Ese es el objetivo de arsort(). Si quieres una secuencia limpia 0, 1, 2… tras la ordenación, usa rsort().
  • Comparar tipos mixtos puede dar un orden inesperado con SORT_REGULAR. Pasa un indicador explícito cuando tu array mezcle strings y números.
  • Para lógica de comparación personalizada (ordenar objetos o por una clave calculada) recurre a uasort(), que te permite proporcionar tu propia función de comparación conservando las claves.

Conclusión

arsort() ordena un array en orden descendente por valor manteniendo cada clave vinculada a su valor, lo que lo hace ideal para datos clasificados que llevan etiquetas, como puntuaciones o precios. Recuerda que ordena en su lugar y devuelve true, y elige un indicador de ordenación que se ajuste a tus tipos de datos. Cuando necesites una combinación diferente de orden, clave frente a valor, o conservación de claves, las funciones relacionadas de la tabla anterior cubren todos los casos.

Práctica

Práctica
¿Cuál es la funcionalidad de la función arsort() en PHP?
¿Cuál es la funcionalidad de la función arsort() en PHP?
Was this page helpful?