W3docs

isset()

La funzione isset() di PHP verifica se una variabile è stata impostata e non è null. Restituisce true se la variabile esiste e non è null.

Introduzione

Il costrutto isset() è un costrutto del linguaggio PHP che verifica se una variabile è stata impostata. Restituisce true se la variabile esiste e non è null, e false in caso contrario.

L'aspetto fondamentale da capire è che isset() si preoccupa solo dell'esistenza, non della veridicità. Restituisce true anche quando il valore è 0, false, "0", o una stringa vuota "" — restituisce false solo per le variabili che non sono mai state definite, che sono state eliminate, o che contengono null.

Questo rende isset() il modo sicuro per verificare le chiavi degli array e i campi dei form prima di leggerli, evitando gli avvisi "Undefined variable" e "Undefined array key" che PHP emette quando si accede a qualcosa che non esiste.

Questa pagina tratta la sintassi di isset(), il suo comportamento con null, 0 e le chiavi di array mancanti, come verificare più variabili contemporaneamente e come si differenzia dalle funzioni correlate empty(), is_null() e array_key_exists().

Sintassi

La sintassi del costrutto isset() è la seguente:

Sintassi PHP di isset()

bool isset(mixed $var [, mixed $... ])

Il costrutto accetta uno o più parametri, $var e ulteriori parametri opzionali separati da virgole. Ogni parametro rappresenta una variabile da verificare. Il costrutto restituisce true se tutte le variabili esistono e non sono null, e false in caso contrario.

Esempio di utilizzo

Ecco un esempio di come utilizzare il costrutto isset() in PHP:

Esempio di isset() in PHP

<?php
$var1 = "hello";
$var2 = null;
$var3 = 0;
$array = ['key' => 'value'];

if (isset($var1)) {
    echo '$var1 is set and is not null' . "\n";
}
if (isset($var2)) {
    echo '$var2 is set and is not null' . "\n";
} else {
    echo '$var2 is not set or is null' . "\n";
}
if (isset($var3)) {
    echo '$var3 is set (value is 0)' . "\n";
}
if (isset($array['key'])) {
    echo "Array key 'key' is set" . "\n";
}
?>

In questo esempio definiamo diverse variabili e un array. Utilizziamo il costrutto isset() per verificare se ogni variabile o chiave dell'array è impostata. Il primo if restituisce true perché $var1 è impostata. Il secondo if restituisce false perché $var2 è null, quindi viene eseguito il blocco else. Il terzo if restituisce true perché $var3 è impostata a 0 (dimostrando che isset() verifica l'esistenza, non la veridicità). Il quarto if restituisce true perché la chiave dell'array 'key' esiste.

Verifica di più variabili contemporaneamente

isset() accetta più argomenti e restituisce true solo quando tutti gli argomenti sono impostati e non null. Non appena uno di essi manca o è null, l'intera chiamata restituisce false. Questo è utile per verificare che un gruppo di valori richiesti sia tutti presenti prima di procedere:

<?php
$name  = "Ada";
$email = "[email protected]";
$phone = null;

if (isset($name, $email)) {
    echo "Both name and email are set" . "\n";
}

if (isset($name, $email, $phone)) {
    echo "All three are set" . "\n";
} else {
    echo "At least one of name, email, phone is missing or null" . "\n";
}
?>

Poiché $phone è null, il secondo isset() restituisce false anche se gli altri due sono impostati.

Array annidati e chiavi mancanti

Un motivo comune per usare isset() è la lettura di dati profondamente annidati, come $_POST o una struttura JSON decodificata, in cui qualsiasi livello potrebbe essere assente. isset() esegue un cortocircuito in modo sicuro: se una chiave intermedia non esiste, restituisce false invece di generare un avviso.

<?php
$user = [
    'profile' => [
        'name' => 'Grace',
    ],
];

var_dump(isset($user['profile']['name']));   // bool(true)
var_dump(isset($user['profile']['age']));    // bool(false) - key missing
var_dump(isset($user['settings']['theme'])); // bool(false) - 'settings' missing entirely
?>

Nota che isset() restituisce false per una chiave esistente il cui valore è null. Se è necessario distinguere "la chiave esiste ma contiene null" da "la chiave non esiste", usa invece array_key_exists().

isset() vs empty(), is_null() e array_key_exists()

Queste quattro funzioni sono facili da confondere. La tabella mostra cosa restituisce ciascuna per una variabile $x con valori diversi:

Valore di $xisset($x)empty($x)is_null($x)
"text"truefalsefalse
0 / 0.0 / "0"truetruefalse
"" (stringa vuota)truetruefalse
nullfalsetruetrue
non definita / eliminatafalsetrueavviso + true

Punti chiave:

  • Usa isset() quando vuoi sapere se qualcosa esiste e non è null — non genera mai avvisi per variabili non definite.
  • Usa empty() quando vuoi sapere se un valore è "falsy" (0, "", null, false, array vuoto, ecc.).
  • Usa is_null() quando ti interessa specificatamente il valore null — ma nota che genera un avviso se la variabile non è mai stata definita.
  • Usa array_key_exists() quando una chiave può legittimamente contenere null e hai comunque bisogno di rilevarne la presenza.

Il collegamento con l'operatore null coalescing

Da PHP 7, l'operatore null coalescing ?? è un'alternativa concisa a una verifica con isset() seguita da un valore di fallback. L'espressione $a ?? $b restituisce $a se è impostata e non null, altrimenti $b — senza alcun avviso:

<?php
$config = ['timeout' => 30];

// Verbose: explicit isset()
$retries = isset($config['retries']) ? $config['retries'] : 5;
echo $retries . "\n"; // 5

// Concise: same result with the ?? operator
$timeout = $config['timeout'] ?? 60;
echo $timeout . "\n"; // 30
?>

Usa ?? quando hai bisogno semplicemente di un valore predefinito; usa isset() quando hai bisogno del risultato booleano stesso, ad esempio all'interno di una condizione più ampia.

Conclusione

Il costrutto isset() è uno strumento utile per verificare se una variabile è stata impostata in PHP. Può essere usato per assicurarsi che una variabile esista prima di eseguire operazioni su di essa, o per gestire le variabili impostate e non impostate in un modo specifico. Utilizzando questo costrutto, gli sviluppatori possono garantire che il loro codice stia lavorando con i dati attesi e prevenire errori che potrebbero verificarsi quando si lavora con valori null.

Esercitazione

Pratica
Qual è la funzione di isset() in PHP?
Qual è la funzione di isset() in PHP?
Was this page helpful?