W3docs

empty

Scopri come empty() di PHP verifica se una variabile è vuota o non impostata, quali valori sono considerati vuoti e le differenze con isset().

Il costrutto linguistico PHP empty()

empty() è un costrutto linguistico PHP che indica se una variabile è vuota — ovvero se non esiste o contiene un valore che PHP considera "falsy" (come "", 0 o null). Poiché non emette mai un avviso per variabili non definite, è lo strumento ideale per verificare input opzionale come campi di form, parametri di query e valori di configurazione.

Questa pagina tratta la sintassi, l'elenco esatto dei valori considerati vuoti, gli errori comuni e le differenze tra empty() e i costrutti correlati isset() e is_null().

In senso stretto, empty() è un costrutto linguistico, non una funzione, anche se viene scritto con le parentesi. Questa distinzione ha una conseguenza pratica — vedi Funziona solo con le variabili qui sotto.

Sintassi

<?php

if (empty($variable)) {
  // $variable is empty (or does not exist)
}

empty($variable) restituisce true quando la variabile è vuota e false altrimenti. È logicamente equivalente a !isset($variable) || $variable == false.

Cosa viene considerato vuoto

Una variabile è vuota quando non esiste o contiene uno di questi valori:

ValorePerché è vuoto
variabile non impostata / non definitala variabile non è mai stata assegnata
nullil tipo "nessun valore"
falseil boolean false
0 (int) e 0.0 (float)zero numerico
"0" (string)la string contenente uno zero singolo — una classica sorpresa
"" (string vuota)una string senza caratteri
[] (array vuoto)un array senza elementi

Tutto il resto — inclusi "0.0", " " (uno spazio), "false" e l'array [0]non è vuoto.

La regola per "0" è quella che inganna di più. Un numero civico, un codice postale o un termine di ricerca pari a "0" verrà segnalato come vuoto. Se uno zero letterale è un valore valido, controlla la lunghezza o confronta esplicitamente invece di usare empty().

Esempi

<?php

// Example 1 — empty string
$myVariable = "";
if (empty($myVariable)) {
  echo "Variable is empty" . PHP_EOL;
} else {
  echo "Variable is not empty" . PHP_EOL;
}

// Example 2 — empty array
$myArray = [];
if (empty($myArray)) {
  echo "Array is empty" . PHP_EOL;
} else {
  echo "Array is not empty" . PHP_EOL;
}

// Output:
// Variable is empty
// Array is empty

Un caso d'uso pratico: validare l'input di un form

empty() è particolarmente utile per proteggere da dati di richiesta mancanti o vuoti, perché verifica "non impostato" e "vuoto" in un'unica espressione:

<?php

$username = $_POST['username'] ?? null;

if (empty($username)) {
  echo "Please enter a username." . PHP_EOL;
} else {
  echo "Welcome, $username!" . PHP_EOL;
}

// With $_POST['username'] missing or "" → "Please enter a username."
// With $_POST['username'] = "Sam"      → "Welcome, Sam!"

Il problema con "0" in azione

<?php

$values = ["", "0", "0.0", "hello", " "];

foreach ($values as $value) {
  $state = empty($value) ? "empty" : "not empty";
  echo "'$value' is $state" . PHP_EOL;
}

// Output:
// '' is empty
// '0' is empty
// '0.0' is not empty
// 'hello' is not empty
// ' ' is not empty

Si noti che "0" viene segnalato come vuoto, ma "0.0" e uno spazio singolo non lo sono.

Funziona solo con le variabili

Poiché empty() è un costrutto linguistico, può essere usato solo su variabili — passare il risultato di un'espressione o di una chiamata a funzione è un errore di sintassi prima di PHP 5.5 e in generale una trappola logica da evitare:

<?php

// Valid — argument is a variable:
$name = trim("  ");
if (empty($name)) {
  echo "Name is blank";
}

// Avoid — empty(trim($name)) reads awkwardly; assign first, as above.

empty() vs isset() vs is_null()

Questi tre costrutti sono facili da confondere. La tabella mostra cosa restituisce ciascuno per gli stessi input:

Inputempty()isset()is_null()
variabile non definitatruefalsewarning + true
nulltruefalsetrue
""truetruefalse
0 / "0"truetruefalse
falsetruetruefalse
[]truetruefalse
"hello"falsetruefalse

Regole pratiche:

  • Usa isset() per chiederti "questa variabile esiste e non è null?" — ideale per le chiavi degli array e le proprietà degli oggetti.
  • Usa is_null() per chiederti "questo valore è esattamente null?" e nient'altro.
  • Usa empty() per chiederti "manca questo valore oppure è vuoto?" — il controllo più ampio e permissivo.

Conclusione

empty() offre un modo unico e senza avvisi per verificare se una variabile è mancante o contiene un valore falsy, il che la rende adatta per validare input opzionale. Tieni a mente la regola per "0", ricorda che accetta solo variabili, e usa isset() o is_null() quando hai bisogno di un controllo più preciso. Per ulteriori informazioni sui valori su cui operano questi controlli, vedi PHP Data Types e PHP Variables.

Esercizio

Pratica
Cosa fa empty() in PHP?
Cosa fa empty() in PHP?
Was this page helpful?