Resumo : neste tutorial, você aprenderá sobre o operador OR (||) do PHP e como usá-lo para construir expressões lógicas complexas.
Introdução ao operador PHP OR
O operador lógico OR
aceita dois operandos e retorna true
se um dos operandos for verdadeiro; caso contrário, ele retorna false
. Em outras palavras, o operador lógico OR retorna false
se ambos os operandos forem false
.
Para representar o operador lógico OR, o PHP usa a or
palavra-chave ou o ||
seguinte:
expression1 or expression2
Ou
expression1 || expression2
A tabela a seguir ilustra o resultado do or
operador:
expressão1 | expressão2 | expressão1 || expressão2 |
---|---|---|
true |
true |
true |
true |
false |
true |
false |
true |
true |
false |
false |
false |
Observe que or
, Or
e OR
são iguais porque as palavras-chave PHP não diferenciam maiúsculas de minúsculas.
Os operadores ||
e or
retornam o mesmo resultado. A única diferença entre os operadores ||
e or
são suas precedências. O or
operador tem precedência mais alta que o ||
operador.
Exemplos de operadores PHP OR
Suponha que você precise limpar o cache do site se o sinalizador $exprired
ou $purge
estiver definido como true
. Para fazer isso, você pode usar o operador lógico OR da seguinte maneira:
<?php
$expired = true;
$purged = false;
$clear_cache = $expired || $purged;
var_dump($clear_cache);
Linguagem de código: HTML, XML ( xml )
Saída:
bool(true)
Linguagem de código: JavaScript ( javascript )
Como $expired
is true
, o resultado do operador OR também é true
.
Porém, se você alterar $expired
para false
, o resultado será false
conforme mostrado no exemplo a seguir:
<?php
$expired = false;
$purged = false;
$clear_cache = $expired || $purged;
var_dump($clear_cache);
Linguagem de código: HTML, XML ( xml )
Na prática, você costuma usar o operador lógico OR nas instruções if , if-else , if-elseif , while e do-while .
Curto-circuito
Quando o primeiro operando é true
, o operador lógico OR sabe que o resultado também deve ser true
. Neste caso, não avalia o segundo operando. Este processo é chamado de curto-circuito.
Na prática, muitas vezes você descobre que o operador or é usado no seguinte padrão:
function_call() || die(message)
Linguagem de código: PHP ( php )
Se function_call()
retornar true
, foi bem-sucedido. O PHP nunca executará o segundo operando que é uma chamada para a die()
função. Caso contrário, o PHP chamará a die()
função com uma mensagem de erro.
Por exemplo:
<?php
function connect_to_db()
{
return false;
}
connect_to_db() || die('Cannot connect to the database.');
Linguagem de código: HTML, XML ( xml )
Saída:
Cannot connect to the database
Neste exemplo, a connect_to_db()
função retorna false
, o PHP chama a die()
função que mostra a mensagem de erro.
As pegadinhas do PHP OU
Veja o exemplo a seguir:
<?php
$result = false or true;
var_dump($result);
Linguagem de código: HTML, XML ( xml )
Saída:
bool(false)
Linguagem de código: JavaScript ( javascript )
Neste exemplo, você esperaria que o resultado $ fosse verdadeiro porque a expressão falsa ou verdadeira retorna verdadeiro. No entanto, não é o caso.
Ao avaliar a seguinte afirmação:
$result = false or true;
Linguagem de código: PHP ( php )
O PHP avalia o $result = false
primeiro e depois o or
segundo operador porque o =
operador tem precedência maior que o or
operador.
Observe que cada operador tem precedência. E o PHP avaliará os operadores com maior precedência antes daqueles com menor precedência.
Tecnicamente, é equivalente ao seguinte:
($result = false) or true;
Linguagem de código: PHP ( php )
Portanto, $result
é atribuído o false
valor.
Para corrigir isso, você precisa usar parênteses para alterar a ordem de avaliação:
<?php
$result = (false or true);
var_dump($result);
Linguagem de código: HTML, XML ( xml )
Saída:
bool(true)
Linguagem de código: JavaScript ( javascript )
Ou você pode usar o || operador:
<?php
$result = false || true;
var_dump($result);
Linguagem de código: HTML, XML ( xml )
Saída:
bool(true)
Linguagem de código: JavaScript ( javascript )
Portanto, é uma boa prática sempre usar o ||
operador em vez do or
operador.
Resumo
- Use o operador PHP OR (
or
,||
) para combinar duas expressões e retornartrue
se alguma das expressões fortrue
; caso contrário, ele retornafalse
. - O operador lógico OR está em curto-circuito.
- Use o
||
operador em vez door
operador.