Menu
Coddy logo textTech

Ordenar arrays asociativos por valor

Parte de la sección Lógica y Flujo del Journey de PHP de Coddy — lección 22 de 68.

Al trabajar con arreglos asociativos, a menudo es necesario ordenarlos por sus valores manteniendo las relaciones clave-valor. PHP proporciona dos funciones especializadas para este propósito: asort() para el orden ascendente y arsort() para el orden descendente.

Aquí se muestra cómo funciona asort() para ordenar por valores en orden ascendente:

<?php
$students = [
    "Alice" => 85,
    "Bob" => 92,
    "Charlie" => 78,
    "Diana" => 96
];

asort($students);
print_r($students);
// Salida: Array ( [Charlie] => 78 [Alice] => 85 [Bob] => 92 [Diana] => 96 )
?>

Observe cómo las calificaciones ahora están organizadas de menor a mayor, pero el nombre de cada estudiante permanece correctamente emparejado con su calificación. Esta es la ventaja clave de asort() sobre el sort() regular—mantiene la asociación entre claves y valores.

Para el orden descendente, arsort() funciona de manera similar pero organiza los valores de mayor a menor:

<?php
arsort($students);
print_r($students);
// Salida: Array ( [Diana] => 96 [Bob] => 92 [Alice] => 85 [Charlie] => 78 )
?>

Ambas funciones modifican el array original directamente, al igual que sus contrapartes de arrays indexados. Esto las hace perfectas para organizar datos como calificaciones de estudiantes, precios de productos o cualquier escenario donde necesites ordenar por valor manteniendo intactos los pares clave-valor.

quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

challenge icon

Desafío

Fácil

Recibirás una entrada: un array asociativo de nombres de empleados y sus salarios en formato JSON. Lee la entrada, convierte la cadena JSON en un array, usa arsort() para ordenar a los empleados por salario en orden descendente (de mayor a menor), y muestra el array ordenado usando print_r().

Formato de entrada: Una línea que contiene un objeto JSON con nombres de empleados como claves y salarios como valores (ejemplo: {"John":45000,"Sarah":52000,"Mike":38000,"Lisa":61000})

Resultado esperado: El array asociativo ordenado en orden descendente por los valores de salario, mostrado usando print_r()

Hoja de referencia

Usa asort() para ordenar arrays asociativos por valores en orden ascendente mientras se preservan las relaciones clave-valor:

<?php
$students = [
    "Alice" => 85,
    "Bob" => 92,
    "Charlie" => 78,
    "Diana" => 96
];

asort($students);
print_r($students);
// Salida: Array ( [Charlie] => 78 [Alice] => 85 [Bob] => 92 [Diana] => 96 )
?>

Usa arsort() para ordenar arrays asociativos por valores en orden descendente:

<?php
arsort($students);
print_r($students);
// Salida: Array ( [Diana] => 96 [Bob] => 92 [Alice] => 85 [Charlie] => 78 )
?>

Ambas funciones modifican el array original directamente y mantienen la asociación entre claves y valores, a diferencia del sort() regular.

Pruébalo tú mismo

<?php
// Leer la entrada
$input = fgets(STDIN);

// Convertir JSON a un array asociativo
$employees = (array)json_decode($input, true);

// TODO: Escribe tu código a continuación para ordenar el array por salario en orden descendente


// Mostrar el array ordenado
print_r($employees);
?>
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y Flujo