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!
É isso! Espero que tenha gostado! :D
Top comments (0)