DEV Community

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

Posted on

3 1

[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

Sentry image

Hands-on debugging session: instrument, monitor, and fix

Join Lazar for a hands-on session where you’ll build it, break it, debug it, and fix it. You’ll set up Sentry, track errors, use Session Replay and Tracing, and leverage some good ol’ AI to find and fix issues fast.

RSVP here →

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay