DEV Community

Cover image for [PHP curtas] — Funções empty e isset: Esse valor realmente existe?
Tadeu Barbosa
Tadeu Barbosa

Posted on

[PHP curtas] — Funções empty e isset: Esse valor realmente existe?

Como podemos definir se uma variável realmente existe ou só está vazia no PHP? Vem ver! É curta!

O PHP possui algumas funções próprias, dentre essas: empty() e isset(), ambas usadas para testar se uma variável foi inicializada, ou seja, se ela aponta para um endereço na memória. Por fim retorna um booleano baseado nessa existência.

A função empty

No manual temos:

empty(mixed $var): bool
Determina se uma variável é considerada vazia. Uma variável é considerada vazia se não existir ou seu valor é igual false. A função empty() não gera um aviso se a variável não existir.

Ou seja, o empty() somente verifica se uma variável é considerada vazia. Ainda no manual, temos as seguintes definições de vazio:

  • "" (uma string vazia)
  • 0 (0 como um inteiro)
  • 0.0 (0 como um ponto flutuante)
  • "0" (0 como uma string)
  • null
  • false
  • array() (um array vazio)
  • $var; (uma variável declarada, mas sem valor)

A função isset

isset(mixed $var, mixed $var = ?, $... = ?): bool

Já o isset() verifica somente se existe um endereço para aquele valor na memória.

Alguns pontos importantes:

  • Você pode passar quantos parâmetros quiser para a função: isset($valor1, $valor2, ..., $valor100), porém deve-se lembrar que a função retornará true somente se todos os valores forem definidos. Se o $valor2 não for definido, por exemplo, a função retornará false!
  • Caso você utilize a função unset() para destruir um valor, logo a função isset() retornará false.

Como no exemplo da imagem do cabeçalho. A função isset() retornará true para uma string vazia (""), mas retornará false para um null. Quando setamos null, aquele valor não está/estará mais na memória.

$valor = '';

if (empty($valor)) {
  echo 'Sim! Estou vazio!' . PHP_EOL;
}

if (isset($valor)) {
  echo 'Sim! Eu existo na memória!' . PHP_EOL;
}

$valor = null;

if (empty($valor)) {
  echo 'Sim! Estou vazio novamente!' . PHP_EOL;
}

if (isset($valor)) {
  echo 'Ops! Eu não vou entrar aqui!';
}


// printa:
//
// Sim! Estou vazio!
// Sim! Eu existo na memória!
// Sim! Estou vazio novamente!
Enter fullscreen mode Exit fullscreen mode

É isso! Espero que tenha gostado! :D

Discussion (0)