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.
Desafio
FácilVocê 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);
?>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 LeaderboardPratique por conta própria: Compilador de PHP online