W3docs

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 => valor alfabé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ámetroRequeridoDescripción
$arrayEl array a ordenar. Se pasa por referencia y se modifica en el lugar.
$sorting_typeNoUn 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:

IndicadorComportamiento
SORT_REGULARCompara elementos normalmente (por defecto). Las cadenas numéricas se comparan como números.
SORT_NUMERICCompara elementos numéricamente.
SORT_STRINGCompara elementos como cadenas.
SORT_NATURALCompara elementos como cadenas usando "ordenación natural" (como natsort()).
SORT_LOCALE_STRINGCompara 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:

php— editable, runs on the server

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:

php— editable, runs on the server

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():

php— editable, runs on the server

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:

php— editable, runs on the server

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]

Práctica

Práctica
¿Cuál es el propósito de la función ksort() en PHP?
¿Cuál es el propósito de la función ksort() en PHP?
Was this page helpful?