Logical Operators Part 2
Parte da seção Fundamentos do Journey de PHP da Coddy — lição 26 de 71.
O operador NOT (!) inverte um valor booleano para o seu oposto. Se algo é true, torna-se false, e vice-versa:
<?php
$isLoggedIn = false;
$showLoginButton = !$isLoggedIn;
var_dump($showLoginButton); // bool(true)
$isLoggedIn = true;
$showLoginButton = !$isLoggedIn;
var_dump($showLoginButton); // bool(false)
?>Você pode combinar múltiplos operadores lógicos em uma única expressão. Quando fizer isso, use parênteses para tornar suas intenções claras:
<?php
$age = 25;
$hasTicket = true;
$isVIP = false;
// Pode entrar se: tem ingresso E (é adulto OU é VIP)
$canEnter = $hasTicket && ($age >= 18 || $isVIP);
var_dump($canEnter); // bool(true)
?>Sem parênteses, && é avaliado antes de ||. No entanto, usar parênteses torna seu código mais fácil de ler e previne erros. Ao combinar operadores, sempre agrupe as condições logicamente para expressar exatamente o que você quer dizer.
Desafio
FácilLeia quatro valores da entrada: um inteiro temperature, uma string isRaining (seja "true" ou "false"), uma string hasUmbrella (seja "true" ou "false"), e uma string hasRaincoat (seja "true" ou "false").
Converta os valores de string para booleanos comparando-os com "true".
Avalie as seguintes três condições e imprima o resultado de cada uma usando var_dump(), cada uma em uma nova linha:
- Verifique se NÃO está chovendo (use o operador
!) - Verifique se a pessoa deve ficar dentro de casa: está chovendo E eles não têm nem guarda-chuva nem capa de chuva (use
!com ambos os itens) - Verifique se a pessoa pode sair confortavelmente: a temperatura é pelo menos 15 E (não está chovendo OU eles têm guarda-chuva ou capa de chuva)
Exemplo:
Se as entradas forem 20, true, false, e true, a saída deve ser:
bool(false)
bool(false)
bool(true)Explicação:
!isRaining→ !true → falseisRaining && !hasUmbrella && !hasRaincoat→ true && true && false → falsetemperature >= 15 && (!isRaining || hasUmbrella || hasRaincoat)→ true && (false || false || true) → true && true → true
Folha de consulta
O operador NOT (!) inverte um valor booleano para o oposto:
<?php
$isLoggedIn = false;
$showLoginButton = !$isLoggedIn;
var_dump($showLoginButton); // bool(true)
$isLoggedIn = true;
$showLoginButton = !$isLoggedIn;
var_dump($showLoginButton); // bool(false)
?>Você pode combinar múltiplos operadores lógicos em uma única expressão. Use parênteses para tornar suas intenções claras:
<?php
$age = 25;
$hasTicket = true;
$isVIP = false;
// Pode entrar se: tem ingresso E (é adulto OU é VIP)
$canEnter = $hasTicket && ($age >= 18 || $isVIP);
var_dump($canEnter); // bool(true)
?>Sem parênteses, && é avaliado antes de ||. No entanto, usar parênteses torna seu código mais fácil de ler e previne erros.
Experimente você mesmo
<?php
// Ler valores de entrada
$temperature = intval(fgets(STDIN));
$isRainingStr = trim(fgets(STDIN));
$hasUmbrellaStr = trim(fgets(STDIN));
$hasRaincoatStr = trim(fgets(STDIN));
// TODO: Converter valores de string para booleanos comparando-os com "true"
// TODO: Avaliar e imprimir as três condições usando var_dump():
// 1. Verificar se NÃO está chovendo
// 2. Verificar se a pessoa deve ficar dentro de casa (chovendo E sem guarda-chuva E sem capa de chuva)
// 3. Verificar se a pessoa pode sair confortavelmente
?>Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentos
4Comparison & Logical Operators
Comparison OperatorsEquality & IdentityLogical Operators Part 1Logical Operators Part 2Recap - Simple Logic2Variables and Data Types
NumbersStrings and QuotesBooleansNaming ConventionsRecap - Variable InitEmpty VariablesString ConcatenationGetting User InputCast to Different Types5Conditional Logic
If StatementIf - ElseThe Ternary OperatorNull Coalescing OperatorSwitch StatementRecap - Making Decisions3Basic Operators
Arithmetic OperatorsModulo OperatorExponentiation OperatorCombined AssignmentIncrement/DecrementOperator PrecedenceRecap - Simple CalculationsString Operators