W3docs

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): bool

Uma 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 set

Saída:

set
not set
not set

O 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().

"Experimente Você Mesmo" não está disponível para este exemplo.

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 null

isset() 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 warning

Note 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 $xisset($x)empty($x)
"hello"truefalse
0 ou "0" ou ""truetrue
nullfalsetrue
indefinidofalsetrue

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

Prática

Prática
Qual é a função de isset() no PHP?
Qual é a função de isset() no PHP?
Was this page helpful?