Curso de PHP: #6 - Operadores de Comparação

Curso de PHP: #6 - Operadores de Comparação

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!!!