W3docs

isset

La funzione "isset" in PHP verifica se una variabile è impostata e non è null. In questo articolo esploriamo la sintassi e l'utilizzo di "isset".

La funzione PHP isset()

isset() è un costrutto del linguaggio PHP che restituisce true quando una variabile esiste (è stata assegnata) e non è null. Restituisce false se la variabile non è mai stata impostata, è stata esplicitamente impostata su null, oppure è stata rimossa con unset().

Poiché leggere una variabile non definita genera un avviso Warning: Undefined variable in PHP, isset() è il metodo standard, privo di effetti collaterali, per chiedere "ho un valore utilizzabile qui?" prima di usarlo — ad esempio per proteggere l'accesso a $_GET, $_POST, o alle chiavi di un array che potrebbero non essere presenti.

Questo capitolo tratta la sintassi, la forma con argomenti multipli, il comportamento con array e proprietà di oggetti, e il confronto con strumenti correlati come empty() e l'operatore di coalescenza null.

Sintassi

isset(mixed $var, mixed ...$vars): bool

Un controllo minimo si presenta così:

if (isset($myVariable)) {
  echo "The variable is set.";
} else {
  echo "The variable is not set.";
}

isset() è un costrutto del linguaggio, non una chiamata a funzione, quindi non è necessario includere o importare nulla per utilizzarlo, e puoi passare più variabili contemporaneamente (trattato di seguito).

Esempi di base

<?php

// Example 1 — an assigned, non-null variable
$myVariable = "Hello, world!";
echo isset($myVariable) ? "set" : "not set"; // set
echo PHP_EOL;

// Example 2 — a variable that was never declared
echo isset($someOtherVariable) ? "set" : "not set"; // not set
echo PHP_EOL;

// Example 3 — a variable explicitly set to null
$empty = null;
echo isset($empty) ? "set" : "not set"; // not set

Output:

set
not set
not set

Il terzo caso è la trappola principale: assegnare null è sufficiente per far restituire false a isset(), anche se la variabile esiste tecnicamente. Se hai bisogno di distinguere "mai dichiarata" da "dichiarata ma null", usa is_null() o array_key_exists().

"Provalo tu stesso" non è disponibile per questo esempio.

Verifica di più variabili contemporaneamente

Quando passi più di un argomento, isset() restituisce true solo se ogni argomento è impostato e non-null. Questo è utile per verificare che un gruppo di campi del modulo obbligatori siano tutti arrivati insieme.

<?php

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

var_dump(isset($name, $email));         // bool(true)
var_dump(isset($name, $email, $phone)); // bool(false) — $phone is null

isset() con gli array

isset() funziona sugli elementi degli array e controlla in modo sicuro le chiavi annidate senza generare un avviso quando manca una chiave intermedia.

<?php

$user = [
  'name'    => 'Ada',
  'address' => ['city' => 'London'],
];

var_dump(isset($user['name']));             // bool(true)
var_dump(isset($user['missing']));          // bool(false)
var_dump(isset($user['address']['city']));  // bool(true)
var_dump(isset($user['address']['zip']));   // bool(false) — no warning

Nota che isset($array['key']) restituisce false quando il valore a quella chiave è null. Se una chiave può legittimamente contenere null e ti interessa solo sapere se la chiave è presente, usa array_key_exists().

isset() vs. empty() vs. l'operatore di coalescenza null

Questi tre vengono spesso confusi. La tabella mostra cosa restituisce ciascuno per lo stesso input:

Valore di $xisset($x)empty($x)
"hello"truefalse
0 o "0" o ""truetrue
nullfalsetrue
non definitafalsetrue

Usa quindi isset() per chiedere "esiste un valore reale qui?", e empty() per chiedere "questo valore manca o è falsy (stringa vuota, 0, false, array vuoto)?".

Da PHP 7, l'operatore di coalescenza null ?? si basa sulla semantica di isset() per fornire un valore predefinito in un'unica espressione — è il sostituto idiomatico del ternario isset() ? : :

<?php

$config = ['theme' => 'dark'];

// Verbose, pre-PHP 7 style:
$theme = isset($config['theme']) ? $config['theme'] : 'light';

// Equivalent with the null coalescing operator:
$theme = $config['theme'] ?? 'light';

echo $theme; // dark

$config['missing'] ?? 'light' restituisce 'light' senza alcun avviso, proprio perché ?? controlla isset() internamente.

Quando usare isset()

  • Proteggere i dati opzionali delle richieste: if (isset($_GET['page'])) { ... }.
  • Verificare i campi obbligatori prima di elaborare un modulo (isset($a, $b, $c)).
  • Leggere in modo sicuro chiavi di array potenzialmente assenti in configurazioni o dati decodificati da JSON.
  • Inizializzare un valore pigro una sola volta: $cache ??= computeExpensiveValue();.

Usa uno strumento diverso quando hai bisogno di trattare null come "presente" (array_key_exists()), verificare il contenuto di oggetti/array per falsità (empty()), o rimuovere completamente una variabile (unset()).

Esercitazione

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