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.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Desafio
FácilVocê 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);
?>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
1Funções Avançadas
Funções AnônimasClosures e 'use'Arrow FunctionsFunções de CallbackUsando 'call_user_func'Funções VariáveisPassagem por ReferênciaFunções RecursivasRecapitulação: Mix de Funções4Arrays Multidimensionais
Criando um Array 2DAcessando Elementos de um Array 2DModificando Elementos de um Array 2DIterando com Loops AninhadosArrays Associativos 2DRecapitulação: Exercício de Grade Simples2Manipulações Avançadas de Arrays
Adicionando com 'array_push'Removendo com 'array_pop'Adicionando com 'array_unshift'Removendo com 'array_shift'Mesclando Arrays IndexadosMesclando Arrays AssociativosExtraindo com 'array_slice'Valores com 'in_array'Chaves com 'array_search'Recapitulação: Exercício de Playlist3Ordenação de Arrays
Ordenar Arrays Indexados (Crescente)Ordenar Arrays Indexados (Decrescente)Ordenar Arrays Associativos por ValorOrdenar Arrays Associativos por ChaveOrdenação por Ordem NaturalOrdenação Personalizada com 'usort'Recapitulação: Ordenação de Leaderboard