1
resposta

Com for e com funções

$notas = [2, 5, 10, 3, 6, 8, ];
sort($notas);
$tamanhoArray = count($notas);

echo "\n for \n\n";

for($i = $tamanhoArray - 1 ; $i >= 3; $i--){
    echo $notas[$i] . "\t";
}

echo "\n\n função \n\n";
function maioresNotas(array $notas){
    rsort($notas);
    return array_slice($notas, 0 , 3);
}
$resultado = maioresNotas($notas);
foreach ($resultado as $key) {
    echo $key . "\t";
}
1 resposta

Oi, Cauan! Como vai?

Agradeço por compartilhar.

Achei interessante como você resolveu o problema de duas formas: usando for e também criando uma função com rsort e array_slice. Isso mostra uma boa evolução no pensamento lógico, principalmente ao comparar abordagens diferentes para o mesmo resultado. A função ficou bem direta e reutilizável.

Se quiser testar o método max em conjunto com remoção de elementos para encontrar maiores valores passo a passo.


$notas = [2, 5, 10, 3, 6, 8];
$top = [];

for ($i = 0; $i < 3; $i++) {
    $maior = max($notas);
    $top[] = $maior;
    $index = array_search($maior, $notas);
    unset($notas[$index]);
}

print_r($top);

Esse código encontra a maior nota, adiciona ao resultado e remove do array original, repetindo o processo para pegar as maiores.

Conteúdos relacionados
Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!