W3docs

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:

Входное значениеВозвращает
nulltrue
Всё остальное — 0, "", "0", false, []false

Распространённая ошибка — считать, что «пустые» значения равны null. Это не так: is_null() строга, поэтому 0, пустая строка и false возвращают false.

Базовый пример

php— editable, runs on the server

Примечание: при выводе через 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.

Практика

Практика
Что делает функция is_null в PHP?
Что делает функция is_null в PHP?
Was this page helpful?