Olá, Tudo bem?
A documentação do PHP nos dá a seguinte definição para o operador de Nave espacial <=>
:
"O operador nave espacial é utilizado para comparar duas expressões. Ele retorna -1, 0 ou 1 quando $a for respectivamente menor que, igual a ou maior que $b. As comparações são feitas de acordo com as já conhecidas regras de comparação de tipos do PHP."
Simplificando essa definição:
- Retorna 1 se o valor da esquerda for maior
- Retorna -1 se o valor da esquerda for menor
- Retorna 0 se os valores forem iguais
Dessa forma, se tivéssemos os seguintes exemplos:
12 <=> 10 // retorna 1
8 <=> 10 // retorna -1
10 <=> 10 // retorna 0
Agora, vamos entender melhor com a expressão vista na aula:
return $nota2['nota'] <=> $nota1['nota'];
- Quando a
$nota2['nota']
for maior que $nota1['nota']
, o retorno será 1, isso significa que a $nota2['nota']
será movida para cima da lista. - Quando a
$nota2['nota']
for menor que a $nota1['nota']
, o retorno será -1, isso significa que a $nota2['nota']
será movida para baixo da lista.
Então, a primeira comparação será:
6 <=> 10 // retorna -1, ou seja, 6 é movido para baixo da lista
Segunda comparação:
9 <=> 6 // retorna 1, ou seja, 9 é movido para cima da lista
Terceira comparação:
9 <=> 10 // retorna -1, ou seja, 9 é movido para baixo da lista.
O resultado será este:
array(3) {
[0]=>
array(2) {
["aluno"]=>
string(5) "Maria"
["nota"]=>
int(10)
}
[1]=>
array(2) {
["aluno"]=>
string(3) "Ana"
["nota"]=>
int(9)
}
[2]=>
array(2) {
["aluno"]=>
string(8) "Vinicius"
["nota"]=>
int(6)
}
}
Espero ter ajudado!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓