Menu
Coddy logo textTech

Uguaglianza e identità

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

PHP offre due modi per verificare se i valori sono uguali: l'operatore di uguaglianza (==) e l'operatore di identità (===). Comprendere la differenza è fondamentale per scrivere codice affidabile.

L'operatore di uguaglianza (==) confronta i valori dopo averli convertiti nello stesso tipo. Questa operazione è chiamata «confronto debole»:

<?php
var_dump(5 == "5");    // bool(true) - string convertita in numero
var_dump(0 == false);  // bool(true) - entrambi diventano 0
var_dump(1 == true);   // bool(true) - entrambi diventano 1
?>

L'operatore di identità (===) confronta sia il valore sia il tipo. Non avviene alcuna conversione, quindi entrambi devono corrispondere esattamente:

<?php
var_dump(5 === "5");   // bool(false) - int vs string
var_dump(5 === 5);     // bool(true) - stesso tipo e valore
var_dump(0 === false); // bool(false) - int vs bool
?>

Per i confronti di «diverso da», usa != (debole) o !== (rigoroso):

<?php
var_dump(5 != "5");    // bool(false) - i valori sono uguali
var_dump(5 !== "5");   // bool(true) - i tipi sono diversi
?>

Come buona pratica, preferisci === e !== per evitare sorprese dovute a conversioni di tipo impreviste.

challenge icon

Sfida

Facile

Leggi due valori dall'input: un numero (come stringa) e un intero.

Usa gli operatori di uguaglianza e identità per valutare i seguenti confronti e stampa il risultato di ciascuno su una nuova riga usando var_dump():

  1. Verifica se il valore stringa è uguale all'intero usando il confronto non rigoroso (==)
  2. Verifica se il valore stringa è uguale all'intero usando il confronto rigoroso (===)
  3. Verifica se il valore stringa è diverso dall'intero usando il confronto non rigoroso (!=)
  4. Verifica se il valore stringa è diverso dall'intero usando il confronto rigoroso (!==)

Nota: Mantieni il primo valore come stringa (non convertirlo). Converti il secondo valore in un intero.

Esempio:

Se gli input sono 42 e 42, l'output dovrebbe essere:

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

Spiegazione:

  • "42" == 42 è vero (i valori sono uguali dopo la conversione del tipo)
  • "42" === 42 è falso (stringa vs int - tipi diversi)
  • "42" != 42 è falso (i valori sono uguali)
  • "42" !== 42 è vero (i tipi sono diversi)

Provalo tu

<?php
// Leggi l'input
$stringValue = trim(fgets(STDIN));
$intValue = intval(trim(fgets(STDIN)));

// TODO: Scrivi il tuo codice qui sotto
// Usa var_dump() per stampare il risultato di ogni confronto su una nuova riga:
// 1. Uguaglianza non rigorosa (==)
// 2. Uguaglianza rigorosa (===)
// 3. Disuguaglianza non rigorosa (!=)
// 4. Disuguaglianza rigorosa (!==)

?>
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