1
resposta

Duvida do ex usort apresentando na aula

Olá , fiquei com uma duvida, sobre o ex apresentado na aula a parte onde é declarado a função.

Estou ciente que a chave seria o (aluno )e acredito que o array íra percorrer por uma ordem alfabética. No exemplo é mencionado a chave nota, como que o php percorre ?

Acredito que nota 1 > nota2 return -1

(nota1) seria a ANA e a (nota2) maria ?

$notas = [

['aluno' => 'maria',
 'nota'  => '10'],

['aluno' => 'vinicius',
 'nota'  => '6'],

['aluno' => 'ana',
 'nota'  => '9']

];

function ordenarNotas($nota1,$nota2) { if($nota1['nota'] > $nota2['nota']){ return -1; }

if ($nota2['nota'] > $nota1['nota']){
    return 1;
}

return 0;

}

usort($notas,'ordenarNotas');

var_dump($notas);

1 resposta

Opa, Piter. Sua dúvida ficou bastante confusa, mas vou tentar responder o que eu entendi:

O que a função usort (ou qualquer variável de sort) faz é percorrer todo o array na ordem em que ele está, e para cada item ele compara com outro do array. Ao fazer essa comparação com algum outro item ele verifica qual dos 2 deve vir primeiro baseado no critério de ordenação.

(nota1) seria a ANA e a (nota2) maria ?

Não. A cada execução da função, os parâmetros serão os arrays contendo as informações de 2 alunos diferentes. Algo como:

  1. $nota1 sendo o array ['aluno' => 'maria', 'nota' => '10'] e $nota2 sendo ['aluno' => 'vinicius', 'nota' => '6']
  2. $nota1 sendo o array ['aluno' => 'vinicius', 'nota' => '6'] e $nota2 sendo ['aluno' => 'ana', 'nota' => '9']
  3. $nota1 sendo o array ['aluno' => 'maria', 'nota' => '10'] e $nota2 sendo ['aluno' => 'ana', 'nota' => '9']

Ou seja, se temos 3 itens, a função vai ser chamada 3 vezes para determinar a ordem de cada elemento no array, entende?