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, você frequentemente precisa ordená-los por seus valores enquanto preserva as relações chave-valor. O PHP fornece duas funções especializadas para este propósito: asort() para ordem crescente e arsort() para ordem decrescente.

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

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

asort($students);
print_r($students);
// Outputs: 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 pareado com sua nota. Esta é a principal vantagem da asort() sobre a sort() comum — ela mantém a associação entre chaves e valores.

Para ordem decrescente, arsort() funciona de forma semelhante, mas organiza os valores do maior para o menor:

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

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

quiz iconTeste seus conhecimentos

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

quiz iconTeste seus conhecimentos

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

quiz iconTeste seus conhecimentos

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

challenge icon

Desafio

Fácil

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

Formato de 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 de salário, exibido usando print_r()

Folha de consulta

Use asort() para ordenar arrays associativos pelos valores em ordem crescente, preservando as relações chave-valor:

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

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

Use arsort() para ordenar arrays associativos pelos valores em ordem decrescente:

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

Ambas as funções modificam o array original diretamente e mantêm a associação entre chaves e valores, ao contrário da função sort() regular.

Experimente você mesmo

<?php
// Ler a 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 pelo 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