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 arrays asociativos, a menudo necesitas ordenarlos por sus valores conservando las relaciones entre claves y valores. PHP proporciona dos funciones especializadas para este propósito: asort() para el orden ascendente y arsort() para el orden descendente.

Así es como 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 )
?>

Observa cómo las calificaciones ahora están ordenadas de menor a mayor, pero el nombre de cada estudiante sigue correctamente asociado con su calificación. Esta es la principal ventaja de asort() sobre sort() normal. Mantiene la asociación entre las claves y los valores.

Para el orden descending, 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 equivalentes para arrays indexados. Esto las hace perfectas para organizar datos como las calificaciones de los estudiantes, los precios de los productos o cualquier situación en la que necesites ordenar por valor manteniendo intactos los pares clave-valor.

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 los empleados por salario en orden descendente (de mayor a menor) e imprime el array ordenado usando print_r().

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

Salida esperada: El array asociativo ordenado en orden descendente según los valores de los salarios, mostrado usando print_r()

Pruébalo tú mismo

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

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

// TODO: Escribe tu código debajo 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

Practica por tu cuenta: Compilador de PHP online