Fala escoteiro, tudo bem!? Seguindo nossa saga de desbravar o PHP vimos no post anterior como trabalhar com operadores matemáticos e nossos programas começaram a ficar mais espertos. Hoje vamos aprofundar um pouco mais e conheceremos os operadores de comparação, mas não se preocupe, assim como tudo até aqui você verá que é bem simples e fácil de aprender.
Em nosso post sobre Tipos de dados tivemos a oportunidade de conhecer diversos tipos com os quais o PHP trabalha e um deles é o tipo Booleano. Eu comentei que aprofundaríamos mais nele e esse momento chegou.
Como vimos, o tipo Booleano aceita apenas 2 possíveis valores true ou false, porém em quais situações isso poderia ser útil?
Se eu afirmar que 5 > 6, essa afirmação tem apenas 2 opções, ou é verdadeira ou é falsa, e por mais que pareça simplório esse exemplo, fazemos esses tipos comparação o tempo todo.
- O Produto A é mais caro que o Produto B?
- O Aluno Miguel tirou uma nota mais alta que a Aluna Juliana?
- A temperatura de ontem foi menor que a temperatura de hoje?
- etc.
Trabalhar com essas comparação no PHP é bem simples.
<?php
$precoArroz = 7.99;
$precoFeijao = 8.99;
$feijaoTemPrecoMaior = $precoFeijao > $precoArroz;
var_dump($feijaoTemPrecoMaior);
Importante: Ao executar o programa acima a saída no console será: bool(true), não se assuste, está tudo certo 😁. Perceba que eu não usei o comando echo, mas sim a função var_dump. Mais pra frente aprenderemos o que é uma função e como criar nossas próprias funções, mas por enquanto você só precisa entender que a função var_dump sempre será sucedida de parênteses, e dentro desses parênteses colocaremos o valor do qual queremos obter informações mais detalhadas.
A função var_dump sempre imprimirá na tela o TIPO do dados, e o seu VALOR. Veja alguns exemplos:
<?php
$nome = "Paulo";
$idade = 37;
$temFilhos = true;
var_dump($nome);
var_dump($idade);
var_dump($temFilhos);
O resultado impresso no console será:
string(5) "Paulo"
int(37)
bool(true)
Perceba que no caso da string, além de o var_dump ter informado o tipo e o valor, ele também informou "o tamanho" da string, ou seja, a quantidade de caracteres lá contidos.
Beleza, agora que já entendemos o que é o var_dump e como utilizá-lo, podemos voltar para o nosso assunto principal, os operadores de comparação.
Caso você queira comprarar se o preço do feijão é menor que o preço do arroz, basta substituir o sinal de > (maior que) por < (menor que):
<?php
$precoArroz = 7.99;
$precoFeijao = 8.99;
$feijaoTemPrecoMenor = $precoFeijao < $precoArroz;
var_dump($feijaoTemPrecoMenor);
Nesse caso a saída no console será bool(false), visto que o preço do feijão não é menor que o preço do arroz.
Em alguns casos precisamos comparar se dois valores são iguais, nessas situações o PHP não pode usar simplesmente o sinal de "=". Lembra o porquê? Isso mesmo, porque esse sinal já é usado como operador de atribuição. Mas, e agora? Como faremos?
O PHP utiliza 2 sinais de igual, em sequência, para fazer comparações de igualdade. Veja o exemplo abaixo:
<?php
$idadePedro = 6;
$idadeJulia = 9;
var_dump($idadePedro == $idadeJulia);
Calma lá!!! Dentro do var_dump eu não tinha que passar só um valor? Por que foram passados dois?
Simples, porque na realidade não foram passados dois valores, foi passado apenas um. O valor que foi passado foi o resultado da comparação $idadePedro == $idadeJulia e na verdade o resultado dessa comparação será sempre um valor Booleano, ou seja, ou true ou false 😉.
As vezes precisamos comparar também se um valor é ao mesmo tempo maior ou igual a outro valor. O PHP tem dois operadores para esse tipo de situação >= e <=.
Veja como eles funcionam nesse exemplo
<?php
$idadeMariana = 18;
$maiorDeIdade = $idadeMariana >= 18;
var_dump($maiorDeIdade);
O valor impresso será bool(true), visto que a idade não é maior que 18, mas é igual, e esse operador avalia as duas situações maior ou igual, ou seja, ou um ou outro.
Talvez nesse momento você esteja se perguntando:
"Eu vi os operadores >, <, >=, <=, "==", mas... E se eu quiser saber se dois valores são diferentes? Não tem operador para isso?
Claro que temos. Para comparar a desigualdade, basta usar o operador !=
<?php
$apelidoJoao = "Jão";
$apelidoGabriel = "Biel";
$saoDiferentes = $apelidoJoao != $apelidoGabriel;
var_dump($saoDiferentes);
O valor impresso será bool(true), porque estamos comparando a desigualdade e sim, eles são diferentes.
Existem outros operadores de comparação, inclusive o "===", mas não falarei sobre eles agora. Vamos manter as coisas o mais simples possível por enquanto.
Desafio
Será que é possível comparar com os operadores >, <, >=, <= duas Strings? Teste ai e me conta que resultado você encontrou 😊.
Até mais escoteiro!!!