isset
A função isset() do PHP verifica se uma variável está definida e não é null. Aprenda sintaxe, uso com arrays e comparação com empty() e o operador ??.
A Função isset() do PHP
isset() é uma construção de linguagem PHP que retorna true quando uma variável existe (foi atribuída) e não é null. Retorna false se a variável nunca foi definida, foi explicitamente definida como null ou foi removida com unset().
Como a leitura de uma variável indefinida dispara um aviso Warning: Undefined variable no PHP, isset() é a forma padrão e sem efeitos colaterais de perguntar "tenho um valor utilizável aqui?" antes de realmente usá-lo — por exemplo, para proteger o acesso a $_GET, $_POST ou chaves de array que podem não estar presentes.
Este capítulo aborda a sintaxe, a forma com múltiplos argumentos, o comportamento com arrays e propriedades de objetos, e como ela se compara com ferramentas relacionadas como empty() e o operador de coalescência nula.
Sintaxe
isset(mixed $var, mixed ...$vars): boolUma verificação mínima tem esta aparência:
if (isset($myVariable)) {
echo "The variable is set.";
} else {
echo "The variable is not set.";
}isset() é uma construção de linguagem, não uma chamada de função, portanto você não precisa incluir ou importar nada para usá-la, e pode passar diversas variáveis de uma só vez (abordado abaixo).
Exemplos básicos
<?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 setSaída:
set
not set
not setO terceiro caso é a armadilha principal: atribuir null é suficiente para fazer isset() retornar false, mesmo que a variável tecnicamente exista. Se você precisar distinguir "nunca declarada" de "declarada mas null", use is_null() ou array_key_exists().
Verificando múltiplas variáveis de uma vez
Quando você passa mais de um argumento, isset() retorna true somente se todos os argumentos estiverem definidos e não forem null. Isso é útil para validar que um grupo de campos de formulário obrigatórios chegou junto.
<?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 nullisset() com arrays
isset() funciona em elementos de array e verifica chaves aninhadas com segurança, sem emitir aviso quando uma chave intermediária está ausente.
<?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 warningNote que isset($array['key']) retorna false quando o valor nessa chave é null. Se uma chave puder legitimamente conter null e você só quiser saber se ela está presente, use array_key_exists().
isset() vs. empty() vs. o operador de coalescência nula
Esses três são frequentemente confundidos. A tabela mostra o que cada um retorna para a mesma entrada:
Valor de $x | isset($x) | empty($x) |
|---|---|---|
"hello" | true | false |
0 ou "0" ou "" | true | true |
null | false | true |
| indefinido | false | true |
Portanto, use isset() para perguntar "existe um valor real aqui?" e empty() para perguntar "isso está ausente ou é falso (string vazia, 0, false, array vazio)?".
Desde o PHP 7, o operador de coalescência nula ?? baseia-se na semântica de isset() para fornecer um valor padrão em uma expressão — é a substituição idiomática do ternário 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' avalia como 'light' sem aviso, exatamente porque ?? verifica isset() internamente.
Quando usar isset()
- Proteger dados de requisição opcionais:
if (isset($_GET['page'])) { ... }. - Confirmar campos obrigatórios antes de processar um formulário (
isset($a, $b, $c)). - Ler com segurança chaves possivelmente ausentes em configuração ou dados decodificados de JSON.
- Inicializar um valor de forma preguiçosa apenas uma vez:
$cache ??= computeExpensiveValue();.
Use uma ferramenta diferente quando precisar tratar null como "presente" (array_key_exists()), verificar conteúdo de objetos/arrays em busca de falsidade (empty()) ou remover uma variável completamente (unset()).