is_null()
A função is_null() do PHP verifica se uma variável é null. Veja sintaxe, exemplos e diferenças em relação a isset() e empty().
Introdução
is_null() é uma função nativa do PHP que retorna true quando uma variável possui o valor null, e false caso contrário. null é o tipo especial "sem valor" do PHP — representa uma variável que foi explicitamente esvaziada, recebeu o valor null ou nunca recebeu nenhum valor. Esta página aborda a sintaxe, o que is_null() captura (e o que não captura), como ela difere de isset() e empty(), e quando preferir a comparação === null.
Sintaxe
is_null(mixed $value): boolA função aceita um argumento, $value, e retorna um boolean:
| Entrada | Retorna |
|---|---|
null | true |
Qualquer outro valor — 0, "", "0", false, [] | false |
Uma fonte comum de bugs é assumir que valores "vazios" são null. Não são: is_null() é estrita, portanto 0, a string vazia e false retornam false.
Exemplo básico
Observação: ao usar echo, o PHP converte true para 1 e false para uma string vazia, por isso a segunda linha não imprime nada. Para ver os valores boolean claramente, use var_dump() em vez de echo.
Null não é o mesmo que vazio
Este é o mal-entendido mais frequente. Apenas null é null — valores que simplesmente parecem vazios não são:
<?php
var_dump(is_null(null)); // bool(true)
var_dump(is_null(0)); // bool(false)
var_dump(is_null("")); // bool(false)
var_dump(is_null(false)); // bool(false)
var_dump(is_null([])); // bool(false)
?>Se você quiser capturar todos esses casos "vazios" de uma vez, use empty(). Use is_null() somente quando quiser verificar especificamente se "o valor é literalmente null".
Um caso de uso prático
is_null() se destaca quando um valor é genuinamente opcional e null é um marcador significativo de "não fornecido" — por exemplo, uma coluna de banco de dados ou um campo de API que pode estar ausente:
<?php
function greet(?string $middleName): string {
if (is_null($middleName)) {
return "No middle name on file.";
}
return "Middle name: $middleName";
}
echo greet(null) . "\n"; // No middle name on file.
echo greet("Marie") . "\n"; // Middle name: Marie
?>is_null() vs === null
No PHP moderno, is_null($var) e $var === null são funcionalmente idênticos — ambos são verificações estritas de null:
<?php
$x = null;
var_dump(is_null($x) === ($x === null)); // bool(true)
?>A forma === null é geralmente preferida em bases de código modernas: evita uma chamada de função (pequena vantagem de desempenho), é lida de forma consistente com outras comparações estritas e funciona em locais onde uma expressão constante é necessária. Use is_null() quando quiser um teste nomeado e chamável — por exemplo como callback: array_filter($items, 'is_null').
Atenção: variáveis indefinidas
is_null() retorna true para uma variável que nunca foi definida, mas também emite um aviso de Undefined variable:
<?php
var_dump(is_null($neverSet)); // Warning: Undefined variable ... then bool(true)
?>Se a variável pode não existir, verifique primeiro com isset() — isset() retorna false para variáveis indefinidas e null, e nunca gera um aviso. Use is_null() somente em variáveis que você sabe que estão definidas.
Conclusão
is_null() é um teste preciso e estrito para o valor null. Use-a quando null tem um significado específico no seu código e você quer distingui-lo de 0, "" ou false. Para verificações do tipo "está ausente ou vazio em algum sentido", prefira isset() ou empty(), e para inspecionar o tipo real de um valor consulte gettype() e tipos de dados PHP.