W3docs

Aprende a ordenar arrays en PHP con la función asort()

Aprende a usar asort() en PHP para ordenar arrays por valor en orden ascendente conservando las asociaciones clave-valor, con sintaxis y ejemplos.

Como desarrollador web, puede que te encuentres en situaciones donde necesites manipular arrays en tu código PHP. Una de esas operaciones es ordenar el array. La función integrada asort() de PHP se puede usar para ordenar un array por sus valores en orden ascendente. En este artículo, exploraremos cómo usar la función asort(), su sintaxis y ejemplos de cómo utilizarla en tu código.

Sintaxis de asort()

La función asort() ordena un array por sus valores en orden ascendente, manteniendo las asociaciones clave-valor. La sintaxis de la función es la siguiente:

Sintaxis de la función asort

asort($array, $sorting_type);

El primer argumento $array es el array que se va a ordenar. El segundo argumento $sorting_type es opcional y especifica el tipo de ordenación. Los valores posibles incluyen:

  • SORT_REGULAR - compara los elementos de forma normal
  • SORT_NUMERIC - compara los elementos numéricamente
  • SORT_STRING - compara los elementos como strings
  • SORT_LOCALE_STRING - compara los elementos como strings según la configuración regional actual

Si no se proporciona el parámetro $sorting_type, se usa SORT_REGULAR por defecto. Ten en cuenta que asort() modifica el array original en su lugar y devuelve true en caso de éxito o false en caso de fallo — no devuelve un nuevo array ordenado, así que no escribas $sorted = asort($array) esperando los datos ordenados en $sorted.

Cuándo usar asort()

Lo que diferencia a asort() de la simple sort() es que mantiene cada valor vinculado a su clave original. Usa asort() cuando las claves tengan un significado que no puedas perder — por ejemplo, un array asociativo que mapea nombres a puntuaciones, ids a precios o nombres de usuario a marcas de tiempo del último acceso. Si ordenas ese tipo de datos con sort(), PHP descarta las claves y reindexa el array como 0, 1, 2, …, rompiendo la asociación.

Usa sort() solo cuando el array sea una lista simple y las claves sean simples posiciones que no te importan.

Ejemplos de asort()

Aquí hay algunos ejemplos que ilustran cómo usar la función asort() en PHP:

  1. Ordenar un array de strings usando asort():

Ejemplos de asort()

php— editable, runs on the server
  1. Ordenar un array de enteros usando asort():

Ordenar un array de enteros usando asort()

php— editable, runs on the server
  1. Ordenar un array asociativo usando asort():

PHP: Ordenar un array asociativo usando asort()

php— editable, runs on the server

Errores comunes

  • Usa SORT_NUMERIC para strings numéricas. Con el SORT_REGULAR predeterminado, valores como "10" y "9" pueden compararse como strings, colocando "10" antes que "9". Pasa SORT_NUMERIC cuando tus valores sean números (aunque estén almacenados como strings) para garantizar un orden numérico.
  • La ordenación no es estable antes de PHP 8.0. En PHP 8.0 y versiones posteriores, los elementos iguales conservan su orden relativo original; en versiones anteriores, el orden no estaba definido.
  • Devuelve un boolean, no el array. Como la ordenación ocurre en su lugar, trata la variable original como el resultado.

Funciones de ordenación relacionadas

PHP ofrece una familia de funciones para ordenar arrays, cada una preservando (o descartando) las claves de forma diferente y ordenando por valor o por clave:

  • sort() — ordena por valor ascendente, reindexa las claves.
  • rsort() — ordena por valor descendente, reindexa las claves.
  • arsort() — como asort() pero descendente, conservando las asociaciones de clave.
  • ksort() / krsort() — ordena por clave ascendente / descendente.
  • usort() / uasort() — ordena con una comparación personalizada mediante callback.

Consulta el resumen de Ordenar Arrays para ver una comparación lado a lado.

Conclusión

La función asort() es una herramienta útil para ordenar arrays en PHP por sus valores en orden ascendente, manteniendo las asociaciones clave-valor. Destaca especialmente cuando las claves tienen significado — al ordenar un array asociativo de nombres a puntuaciones, ids a precios, etc. — donde la simple sort() descartaría esas claves. Al comprender su sintaxis, los tipos de ordenación y las funciones de ordenación relacionadas, puedes elegir la herramienta adecuada para cada tarea de ordenación y escribir código PHP más limpio.

Práctica

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