Menu
Coddy logo textTech

Ordenar Arrays Associativos por Valor

Parte da seção Lógica & Fluxo do Journey de PHP da Coddy. Lição 22 de 68.

Ao trabalhar com arrays associativos, muitas vezes você precisa classificá-los por seus valores, preservando as relações entre chaves e valores. O PHP fornece duas funções especializadas para esse propósito: asort() para ordem crescente e arsort() para ordem decrescente.

Veja como asort() funciona para ordenar por valores em ordem crescente:

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

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

Observe como as notas agora estão organizadas da menor para a maior, mas o nome de cada aluno permanece corretamente associado à sua nota. Essa é a principal vantagem de asort() em relação à sort() comum. Ela mantém a associação entre chaves e valores.

Para descending, arsort() funciona de maneira semelhante, mas organiza os valores do maior para o menor:

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

Ambas as funções modificam diretamente o array original, assim como suas equivalentes para arrays indexados. Isso as torna perfeitas para organizar dados como notas de alunos, preços de produtos ou qualquer cenário em que você precise ordenar por valor mantendo os pares chave-valor intactos.

challenge icon

Desafio

Fácil

Você receberá uma entrada: um array associativo com nomes de funcionários e seus salários no formato JSON. Leia a entrada, converta a string JSON em um array, use arsort() para ordenar os funcionários por salário em ordem decrescente (do maior para o menor) e imprima o array ordenado usando print_r().

Formato da entrada: Uma linha contendo um objeto JSON com nomes de funcionários como chaves e salários como valores (exemplo: {"John":45000,"Sarah":52000,"Mike":38000,"Lisa":61000})

Saída esperada: O array associativo ordenado em ordem decrescente pelos valores dos salários, exibido usando print_r()

Experimente você mesmo

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

// Converter JSON para array associativo
$employees = (array)json_decode($input, true);

// TODO: Escreva seu código abaixo para ordenar o array por salário em ordem decrescente


// Exibir o array ordenado
print_r($employees);
?>
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica & Fluxo

Pratique por conta própria: Compilador de PHP online