Logical Operators Part 2
Parte de la sección Fundamentos del Journey de PHP de Coddy — lección 26 de 71.
El operador NOT (!) invierte un valor booleano a su opuesto. Si algo es true, se convierte en false, y viceversa:
<?php
$isLoggedIn = false;
$showLoginButton = !$isLoggedIn;
var_dump($showLoginButton); // bool(true)
$isLoggedIn = true;
$showLoginButton = !$isLoggedIn;
var_dump($showLoginButton); // bool(false)
?>Puedes combinar múltiples operadores lógicos en una sola expresión. Cuando lo hagas, usa paréntesis para hacer claras tus intenciones:
<?php
$age = 25;
$hasTicket = true;
$isVIP = false;
// Puede entrar si: tiene entrada Y (es adulto O es VIP)
$canEnter = $hasTicket && ($age >= 18 || $isVIP);
var_dump($canEnter); // bool(true)
?>Sin paréntesis, && se evalúa antes que ||. Sin embargo, usar paréntesis hace que tu código sea más fácil de leer y previene errores. Al combinar operadores, siempre agrupa las condiciones lógicamente para expresar exactamente lo que quieres decir.
Desafío
FácilLee cuatro valores de entrada: un entero temperature, una cadena isRaining (ya sea "true" o "false"), una cadena hasUmbrella (ya sea "true" o "false"), y una cadena hasRaincoat (ya sea "true" o "false").
Convierte los valores de cadena a booleanos comparándolos con "true".
Evalúa las siguientes tres condiciones e imprime el resultado de cada una usando var_dump(), cada una en una nueva línea:
- Verifica si NO está lloviendo (usa el operador
!) - Verifica si la persona debería quedarse adentro: está lloviendo Y no tiene ni un paraguas ni un impermeable (usa
!con ambos elementos) - Verifica si la persona puede salir cómodamente: la temperatura es al menos 15 Y (no está lloviendo O tiene un paraguas o impermeable)
Ejemplo:
Si las entradas son 20, true, false, y true, la salida debería ser:
bool(false)
bool(false)
bool(true)Explicación:
!isRaining→ !true → falseisRaining && !hasUmbrella && !hasRaincoat→ true && true && false → falsetemperature >= 15 && (!isRaining || hasUmbrella || hasRaincoat)→ true && (false || false || true) → true && true → true
Hoja de referencia
El operador NOT (!) invierte un valor booleano a su opuesto:
<?php
$isLoggedIn = false;
$showLoginButton = !$isLoggedIn;
var_dump($showLoginButton); // bool(true)
$isLoggedIn = true;
$showLoginButton = !$isLoggedIn;
var_dump($showLoginButton); // bool(false)
?>Puedes combinar múltiples operadores lógicos en una sola expresión. Usa paréntesis para aclarar tus intenciones:
<?php
$age = 25;
$hasTicket = true;
$isVIP = false;
// Can enter if: has ticket AND (is adult OR is VIP)
$canEnter = $hasTicket && ($age >= 18 || $isVIP);
var_dump($canEnter); // bool(true)
?>Sin paréntesis, && se evalúa antes que ||. Sin embargo, usar paréntesis hace que tu código sea más fácil de leer y previene errores.
Pruébalo tú mismo
<?php
// Leer valores de entrada
$temperature = intval(fgets(STDIN));
$isRainingStr = trim(fgets(STDIN));
$hasUmbrellaStr = trim(fgets(STDIN));
$hasRaincoatStr = trim(fgets(STDIN));
// TODO: Convertir valores de cadena a booleanos comparándolos con "true"
// TODO: Evaluar e imprimir las tres condiciones usando var_dump():
// 1. Verificar si NO está lloviendo
// 2. Verificar si la persona debería quedarse adentro (llueve Y no hay paraguas Y no hay impermeable)
// 3. Verificar si la persona puede salir cómodamente
?>Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones 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