Menu
Coddy logo textTech

Operatori logici Parte 2

Fa parte della sezione Fondamenti del percorso PHP di Coddy. Lezione 26 di 71.

L'operatore NOT (!) inverte un valore booleano, trasformandolo nel suo opposto. Se qualcosa è true, diventa false, e viceversa:

<?php
$isLoggedIn = false;

$showLoginButton = !$isLoggedIn;
var_dump($showLoginButton); // bool(true)

$isLoggedIn = true;
$showLoginButton = !$isLoggedIn;
var_dump($showLoginButton); // bool(false)
?>

Puoi combinare più operatori logici in una singola espressione. Quando lo fai, usa le parentesi per rendere chiare le tue intenzioni:

<?php
$age = 25;
$hasTicket = true;
$isVIP = false;

// Può entrare se: ha un biglietto E (è maggiorenne O è VIP)
$canEnter = $hasTicket && ($age >= 18 || $isVIP);
var_dump($canEnter); // bool(true)
?>

Senza parentesi, && viene valutato prima di ||. Tuttavia, usare le parentesi rende il codice più facile da leggere e previene gli errori. Quando combini gli operatori, raggruppa sempre le condizioni in modo logico per esprimere esattamente ciò che intendi.

challenge icon

Sfida

Facile

Leggi quattro valori dall'input: un intero temperature, una stringa isRaining (o "true" o "false"), una stringa hasUmbrella (o "true" o "false") e una stringa hasRaincoat (o "true" o "false").

Converti i valori stringa in booleani confrontandoli con "true".

Valuta le seguenti tre condizioni e stampa il risultato di ciascuna usando var_dump(), ognuna su una nuova riga:

  1. Verifica se NON sta piovendo (usa l'operatore !)
  2. Verifica se la persona dovrebbe restare in casa: sta piovendo E non ha né un ombrello né un impermeabile (usa ! con entrambi gli oggetti)
  3. Verifica se la persona può uscire comodamente: la temperatura è almeno 15 E (non sta piovendo OPPURE ha un ombrello o un impermeabile)

Esempio:

Se gli input sono 20, true, false e true, l'output dovrebbe essere:

bool(false)
bool(false)
bool(true)

Spiegazione:

  • !isRaining → !true → false
  • isRaining && !hasUmbrella && !hasRaincoat → true && true && false → false
  • temperature >= 15 && (!isRaining || hasUmbrella || hasRaincoat) → true && (false || false || true) → true && true → true

Provalo tu

<?php
// Leggi i valori di input
$temperature = intval(fgets(STDIN));
$isRainingStr = trim(fgets(STDIN));
$hasUmbrellaStr = trim(fgets(STDIN));
$hasRaincoatStr = trim(fgets(STDIN));

// TODO: Converti i valori delle stringhe in booleani confrontandoli con "true"


// TODO: Valuta e stampa le tre condizioni usando var_dump():
// 1. Verifica se NON piove
// 2. Verifica se la persona deve rimanere in casa (piove E non ha né ombrello né impermeabile)
// 3. Verifica se la persona può uscire senza problemi

?>
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti

Esercitati da solo: Compilatore PHP online