W3docs

empty

Aprenda como o empty() do PHP verifica variáveis vazias ou não definidas, quais valores são considerados vazios (incluindo o caso "0") e como difere do isset().

O Construtor de Linguagem empty() do PHP

empty() é um construtor de linguagem PHP que indica se uma variável está vazia — ou seja, se ela não existe ou contém um valor que o PHP considera "falsy" (como "", 0 ou null). Como nunca emite um aviso para variáveis indefinidas, é a ferramenta ideal para verificar entradas opcionais como campos de formulário, parâmetros de consulta e valores de configuração.

Esta página aborda a sintaxe, a lista exata de valores tratados como vazios, os casos problemáticos comuns e como empty() difere dos construtores relacionados isset() e is_null().

Em termos estritos, empty() é um construtor de linguagem, não uma função, embora seja escrito com parênteses. Essa distinção tem uma consequência prática — veja Só funciona com variáveis abaixo.

Sintaxe

<?php

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

empty($variable) retorna true quando a variável está vazia e false caso contrário. É logicamente equivalente a !isset($variable) || $variable == false.

O que é considerado vazio

Uma variável está vazia quando não existe ou contém qualquer um destes valores:

ValorPor que é vazio
variável não definida / undefineda variável nunca foi atribuída
nullo tipo "sem valor"
falseo boolean false
0 (int) e 0.0 (float)zero numérico
"0" (string)a string contendo um único zero — uma surpresa clássica
"" (string vazia)uma string sem caracteres
[] (array vazio)um array sem elementos

Tudo o mais — incluindo "0.0", " " (um espaço), "false" e o array [0]não é vazio.

A regra do "0" é a que mais surpreende as pessoas. Um número de casa, um código postal ou um termo de busca "0" será reportado como vazio. Se um zero literal for um valor válido, verifique o comprimento ou compare explicitamente em vez de usar empty().

Exemplos

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

Um caso de uso prático: validando entradas de formulário

empty() é muito útil para proteger contra dados de requisição ausentes ou em branco, pois verifica "não definido" e "em branco" em uma única expressão:

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

O caso problemático do "0" em ação

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

Observe que "0" é reportado como vazio, mas "0.0" e um único espaço não são.

Só funciona com variáveis

Como empty() é um construtor de linguagem, só pode ser usado em variáveis — passar o resultado de uma expressão ou chamada de função é um erro de sintaxe antes do PHP 5.5 e uma armadilha lógica a evitar em geral:

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

Esses três construtores são fáceis de confundir. A tabela mostra o que cada um retorna para as mesmas entradas:

Entradaempty()isset()is_null()
variável undefinedtruefalseaviso + true
nulltruefalsetrue
""truetruefalse
0 / "0"truetruefalse
falsetruetruefalse
[]truetruefalse
"hello"falsetruefalse

Regras práticas:

  • Use isset() para perguntar "esta variável existe e não é null?" — ideal para chaves de array e propriedades de objeto.
  • Use is_null() para perguntar "este valor é exatamente null?" e nada mais.
  • Use empty() para perguntar "está ausente ou em branco?" — a verificação mais ampla e permissiva.

Conclusão

empty() oferece uma forma única e sem avisos de verificar se uma variável está ausente ou contém um valor falsy, o que a torna uma escolha natural para validar entradas opcionais. Tenha em mente a regra do "0", lembre-se de que só aceita variáveis e recorra a isset() ou is_null() quando precisar de uma verificação mais específica. Para saber mais sobre os valores com os quais essas verificações operam, consulte PHP Data Types e PHP Variables.

Prática

Prática
O que empty() faz em PHP?
O que empty() faz em PHP?
Was this page helpful?