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:
| Valor | Por que é vazio |
|---|---|
| variável não definida / undefined | a variável nunca foi atribuída |
null | o tipo "sem valor" |
false | o 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 usarempty().
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 emptyUm 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 emptyObserve 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:
| Entrada | empty() | isset() | is_null() |
|---|---|---|---|
| variável undefined | true | false | aviso + true |
null | true | false | true |
"" | true | true | false |
0 / "0" | true | true | false |
false | true | true | false |
[] | true | true | false |
"hello" | false | true | false |
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 é exatamentenull?" 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.