is_null()
Функция is_null() в PHP проверяет, равна ли переменная null. Узнайте синтаксис, отличия от isset() и empty(), а также когда использовать === null.
Введение
is_null() — встроенная функция PHP, которая возвращает true, если переменная содержит значение null, и false в противном случае. null — это специальный тип PHP «нет значения»: он обозначает переменную, которую явно очистили, присвоили ей null или вообще не инициализировали. На этой странице рассматриваются синтаксис, что именно is_null() обнаруживает (и что нет), чем она отличается от isset() и empty(), и когда лучше использовать сравнение === null.
Синтаксис
is_null(mixed $value): boolФункция принимает один аргумент $value и возвращает boolean:
| Входное значение | Возвращает |
|---|---|
null | true |
Всё остальное — 0, "", "0", false, [] | false |
Распространённая ошибка — считать, что «пустые» значения равны null. Это не так: is_null() строга, поэтому 0, пустая строка и false возвращают false.
Базовый пример
Примечание: при выводе через echo PHP преобразует true в 1, а false — в пустую строку, поэтому вторая строка ничего не печатает. Чтобы увидеть булевы значения наглядно, используйте var_dump() вместо echo.
Null — это не то же самое, что пустое значение
Это самое частое заблуждение. Только null является null — значения, которые лишь кажутся пустыми, таковыми не являются:
<?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)
?>Если нужно охватить сразу все «пустые» случаи, используйте empty(). Применяйте is_null() только тогда, когда вам нужно проверить, что значение буквально равно null.
Практический пример использования
is_null() незаменима, когда значение действительно необязательно и null служит осмысленным маркером «не указано» — например, столбец базы данных или поле API, которое может отсутствовать:
<?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
В современном PHP is_null($var) и $var === null функционально идентичны — оба выполняют строгую проверку на null:
<?php
$x = null;
var_dump(is_null($x) === ($x === null)); // bool(true)
?>Форма === null в целом предпочтительна в современных кодовых базах: она избегает вызова функции (небольшое преимущество в производительности), читается единообразно с другими строгими сравнениями и работает там, где требуется константное выражение. Используйте is_null(), когда нужен именованный вызываемый тест — например, в качестве callback-функции: array_filter($items, 'is_null').
Подводный камень: необъявленные переменные
is_null() возвращает true для переменной, которая никогда не была определена, но при этом также генерирует предупреждение Undefined variable:
<?php
var_dump(is_null($neverSet)); // Warning: Undefined variable ... then bool(true)
?>Если переменная вообще может не существовать, сначала проверьте её с помощью isset() — isset() возвращает false и для необъявленных, и для null-переменных, не вызывая предупреждений. Используйте is_null() только для переменных, существование которых гарантировано.
Заключение
is_null() — это точная, строгая проверка на значение null. Используйте её, когда null несёт конкретный смысл в вашем коде и вы хотите отличить его от 0, "" или false. Для проверок «отсутствует или пусто в любом смысле» предпочтительнее isset() или empty(), а для изучения фактического типа значения используйте gettype() и типы данных PHP.