ksort()
Aprende a usar la función ksort() de PHP para ordenar arrays por clave en orden ascendente, con ejemplos y parámetros explicados.
Función PHP: Array ksort()
La función ksort() de PHP ordena un array por sus claves en orden ascendente, manteniendo cada clave asociada con su valor original. Es la contraparte basada en claves de asort(), que ordena por valor, y el opuesto de krsort(), que ordena las claves en orden descendente.
Esta página cubre cuándo usar ksort(), su sintaxis, parámetros y valor de retorno, los indicadores de tipo de ordenación disponibles y varios ejemplos prácticos (incluyendo el error común de ordenar claves de cadenas numéricas).
Cuándo usar ksort()
Usa ksort() cuando las claves tienen significado y quieres que el array esté ordenado por ellas — por ejemplo:
- Ordenar un array asociativo de pares
nombre => valoralfabéticamente por nombre. - Colocar entradas de configuración o encabezados HTTP en un orden predecible y determinista.
- Ordenar datos con clave por año, ID o categoría antes de iterarlos o renderizarlos.
Como ksort() preserva la asociación clave/valor, es la herramienta adecuada cuando reindexar el array (como haría el simple sort()) perdería información. Consulta el resumen de Ordenar Arrays para una comparación de todas las funciones de ordenación de PHP.
Sintaxis
ksort($array, $sorting_type);Parámetros
La función ksort() acepta dos parámetros:
| Parámetro | Requerido | Descripción |
|---|---|---|
$array | Sí | El array a ordenar. Se pasa por referencia y se modifica en el lugar. |
$sorting_type | No | Un indicador que controla cómo se comparan las claves (véase la tabla siguiente). Por defecto es SORT_REGULAR. |
El indicador $sorting_type acepta las siguientes constantes:
| Indicador | Comportamiento |
|---|---|
SORT_REGULAR | Compara elementos normalmente (por defecto). Las cadenas numéricas se comparan como números. |
SORT_NUMERIC | Compara elementos numéricamente. |
SORT_STRING | Compara elementos como cadenas. |
SORT_NATURAL | Compara elementos como cadenas usando "ordenación natural" (como natsort()). |
SORT_LOCALE_STRING | Compara elementos como cadenas, basándose en la configuración regional actual. |
Nota: ksort() modifica el array original en el lugar — no devuelve un nuevo array ordenado. El orden original de las claves se pierde tras la llamada.
Valor de Retorno
La función ksort() devuelve un boolean: true en caso de éxito y false en caso de error.
Ejemplo 1: Ordenar un Array Asociativo por Clave
Aquí las claves son nombres de personas, por lo que ksort() ordena el array alfabéticamente por nombre (Ben, Joe, Peter) manteniendo cada nombre emparejado con la edad correcta:
Salida:
Array
(
[Ben] => 37
[Joe] => 43
[Peter] => 35
)Ejemplo 2: Ordenar un Array Asociativo por Clave en Orden Inverso
Para el orden descendente de claves, usa krsort() en su lugar — funciona exactamente como ksort() pero invierte el resultado:
Salida:
Array
(
[Peter] => 35
[Joe] => 43
[Ben] => 37
)Ejemplo 3: Ordenar un Array Indexado por Clave
Un array indexado ya tiene claves 0, 1, 2, 3 en orden, por lo que ordenarlo por clave deja los elementos sin cambios. Esto muestra que ksort() ordena las claves, no los valores — para ordenar los valores en sí, usa sort():
Salida:
Array
(
[0] => red
[1] => green
[2] => blue
[3] => yellow
)Ejemplo 4: Ordenar un Array Indexado por Clave en Orden Inverso
Invertir el orden de claves de un array indexado con krsort() mantiene cada valor con su clave numérica original, por lo que los elementos aparecen en orden inverso de inserción:
Salida:
Array
(
[3] => yellow
[2] => blue
[1] => green
[0] => red
)Error común: claves de cadenas numéricas y el indicador de ordenación
Una sorpresa habitual es ordenar un array cuyas claves son cadenas numéricas. Por defecto (SORT_REGULAR) PHP las compara como números, por lo que "10" viene después de "2". Pasar SORT_STRING las compara carácter por carácter, colocando "10" antes de "2":
<?php
$data = ["10" => "a", "1" => "b", "2" => "c"];
ksort($data); // SORT_REGULAR (numeric)
print_r($data);
ksort($data, SORT_STRING); // string comparison
print_r($data);Salida:
Array
(
[1] => b
[2] => c
[10] => a
)
Array
(
[1] => b
[10] => a
[2] => c
)Elige el indicador $sorting_type que coincida con la forma en que deseas interpretar las claves.
Conclusión
La función ksort() ordena un array PHP por sus claves en orden ascendente, en el lugar, mientras preserva cada par clave/valor. Úsala cuando las claves son significativas y el orden importa; usa krsort() para orden descendente, asort() / arsort() para ordenar por valor manteniendo las claves, o sort() cuando quieras descartar las claves por completo. Elige el indicador $sorting_type correcto — especialmente cuando las claves son cadenas numéricas — para obtener la comparación esperada.
graph TD
A[PHP array] -->|ksort| B[Sorted PHP array]