Gostou do nosso conteúdo? Te ajudou?
Nos ajude também! Faça um PIX, de qualquer valor:
programacao.progressiva@gmail.com

Operadores Lógicos em PHP : && (AND), || (OR), ! (NOT) e XOR

Neste tutorial de PHP, vamos aprender o que são, para que servem e como usar os Operadores lógicos em PHP: &&, AND, ||, OR, !, NOT e o XOR.

Também conhecidos como operadores booleanos, os operadores lógicos são mecanismos que permitem agrupar diversas expressões, de modo a produzir um único resultado: TRUE ou FALSE, facilitando muuuito a vida do desenvolver web PHP.

Operador Lógico AND : &&

Suponha que tenhamos duas expressões/variáveis: val1 e val2.
Se fizermos: val1 && val2 ou val1 AND val2

O resultado vai ser:
TRUE: se val1 E val2 forem TRUE, as duas.
FALSE: se val1 ou val2, ou as duas, forem FALSE.

(2>1) && (1==1) : TRUE, as duas expressões são verdadeiras
(2>2) AND (1==1): FALSE, pois a primeira expressão é falsa

Operador Lógico OR: ||

Se AND em inglês significa E (expressão1 E expressão2), OR significa OU.
Assim, se uma expressão for verdadeira OU a outra, toda a expressão será verdadeira:

Para: $a || $b
Será TRUE se $a for verdade OU $b for verdade OU todas forem verdade.
Será FALSE apenas se TODAS forem FALSAS.

Podemos substituir por $a OR $b.

Exemplos:
(2>1) || (2==2): TRUE, ambas são verdade
(1>2) OR (2==2): TRUE, a segunda é verdade
(1>2) OR (2==1): FALSE, pois todas são falsas

Operador Lógico XOR: OR exclusivo

Um pouco semelhante ao operador OR (||), é o XOR.
Ele é chamado de OR Exclusivo.

Dissemos que no OR, a expressão resultante é verdadeira se QUALQUER uma das expressões forem verdadeiras, bastante uma ser (dentre 1 milhão, por exemplo).

O XOR resulta TRUE se, e somente se, UMA  delas for verdadeira.
Se tiver duas ou mais, ou nenhuma expressão, verdadeira, ele vai resultar FALSE.

(2>1) XOR (1==2): TRUE, pois só a primeira é verdadeira
(2>1) XOR (1==1): FALSE< pois ambas são verdadeiras

Operador Lógico NOT: !

Este operador muda o que é TRUE para FALSE, e FALSE para TRUE

!FALSE : TRUE
!1 : FALSE, pois 1 era TRUE
!'' : TRUE, pois string vazia é FALSE


A única diferença entre o && e o AND, bem comoo entre o || e o OR e entre !e o NOT, é a precedência.

$$, || e ! tem precedência maior sobre AND, OR e NOT, por isso usaremos eles nos exemplos de nossa apostila.

Exercício usando Operadores Lógicos

Vamos refazer um exercício:
Crie um sistema Web que pergunte a idade do usuário. Se ele tiver menos de 16 anos, não pode votar.
Se tiver entre 16 e 18  é facultativo. Se tiver entre 18 e 65 é obrigatório votar.
Se tiver mais de 65, também é facultativo.

Solução:
<html>
 <head>
  <title>Apostila PHP Progressivo</title>
 </head>
 <body>
 <form action="" method="get">
  Sua idade:  <input type="number" name="age" /><br />
  <input type="submit" name="submit" value="Testar" />
 </form> 
 <?php 
  $idade = $_GET['age'];
  
  if( $idade<16)
   echo "Não pode votar");
  elseif ($idade<18 || $idade>65)
   echo "Seu voto é facultativo";
  else
   echo "Seu voto é obrigatório";
 ?>
 </body>
</html>

A lógica solução está na página de IF e ELSE aninhados.
Note como a solução ficou menor, isso pois agrupamos duas expressões:
  1. $idade < 18 (já é igual ou mair que 16)
  2. $idade > 65
Pois ambas são de voto facultivo!

Viu como os operadores lógicos deixam nosso código menor, permitindo agrupar diversas expressões ao mesmo tempo?