Is null: примеры (PHP)

Руководство по функции is_null в языке PHP
Раздел: Работа с переменными
is_null(mixed $value): bool
Описание функции is_null

Функция is_null() в PHP определяет, является ли переданное значение null. Она возвращает true, если значение переменной идентично null, и false в противном случае.

Когда используется

Эта функция часто применяется для проверки переменных, которые могут быть не инициализированы, могут содержать результат функции, возвращающей null, или для валидации входных параметров.

Аргументы функции

Функция принимает ровно один обязательный аргумент:

  • $value - проверяемое значение. Может быть любого типа.
Простые примеры использования
Базовые проверки
$var1 = null;
$var2 = 0;
$var3 = '';

var_dump(is_null($var1));
var_dump(is_null($var2));
var_dump(is_null($var3));
bool(true)
bool(false)
bool(false)
Проверка необъявленной переменной
var_dump(is_null($undeclaredVar));
Warning: Undefined variable $undeclaredVar
bool(true)
Сравнение с оператором ===
$value = null;
var_dump($value === null); // Эквивалент is_null($value)
var_dump(is_null($value));
bool(true)
bool(true)
Похожие функции в PHP

В PHP существует семейство функций для проверки типа переменной. Каждая из них служит своей цели.

Проверяет, объявлена ли переменная и не равна ли она null. Возвращает false для null и необъявленных переменных. is_null() для необъявленной переменной вызовет предупреждение, а isset() - нет.

Определяет, пуста ли переменная. Возвращает true для null, false, 0, пустой строки, массива без элементов. is_null() более строгая, она возвращает true только для null.

Сравнение === null

Строгое сравнение с константой null функционально идентично вызову is_null(), но не генерирует предупреждение для необъявленных переменных при использовании в комбинации с оператором контроля ошибок @ или проверкой на существование.

Рекомендация: Для проверки на null в коде, где переменная гарантированно существует, можно использовать любой метод. Если переменная может быть не объявлена, безопаснее использовать isset() с отрицанием или строгое сравнение ($var === null), которое быстрее функции.

Типичные ошибки
Проверка необъявленной переменной без подавления ошибки

Если передать в is_null() имя несуществующей переменной, будет сгенерировано предупреждение.

// Переменная $test не была объявлена ранее.
var_dump(is_null($test));
Warning: Undefined variable $test
bool(true)
Путаница с empty() и isset()

Частая ошибка - считать, что is_null() противоположна isset(). !isset($var) вернет true и для необъявленной переменной, и для переменной со значением null. is_null($var) для необъявленной переменной вызовет ошибку.

$var = null;
var_dump(!isset($var)); // true
var_dump(is_null($var)); // true

// А для необъявленной:
var_dump(!isset($undeclared)); // true
var_dump(@is_null($undeclared)); // true (с подавлением предупреждения)
Изменения в последних версиях PHP

В PHP 8.0 не было внесено значительных изменений в поведение функции is_null(). Однако общая тенденция в PHP 8 - усиление строгости типов и переход от предупреждений к исключениям в некоторых случаях. Это не затрагивает напрямую is_null(), но влияет на контекст её использования.

Рекомендуется в новом коде использовать объявление типов (type hints) с допущением null (например, ?string), что часто делает явную проверку is_null() внутри функции излишней.

Расширенные примеры
Проверка возвращаемого значения функции
Пример php
function findUser($id) {
    // ... поиск в базе данных
    if (!$user) {
        return null;
    }
    return $user;
}

$result = findUser(999);
if (is_null($result)) {
    echo 'Пользователь не найден.';
}
Пользователь не найден.
Использование в массивах
Пример php
$data = ['name' => 'John', 'age' => null, 'city' => ''];

foreach ($data as $key => $value) {
    if (is_null($value)) {
        echo "Поле $key не заполнено (null).\n";
    }
}
Поле age не заполнено (null).
Сравнение с приведением типа

Важно помнить, что is_null() не выполняет приведение типов.

Пример php
$a = 0;
$b = '';
$c = false;
$d = null;

var_dump(is_null($a)); // false
var_dump(is_null($b)); // false
var_dump(is_null($c)); // false
var_dump(is_null($d)); // true

// Для сравнения:
var_dump(empty($a)); // true
var_dump(empty($b)); // true
var_dump(empty($c)); // true
var_dump(empty($d)); // true
bool(false)
bool(false)
bool(false)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
Работа с JSON
Пример php
$jsonString = '{"active": true, "comment": null}';
$data = json_decode($jsonString);

var_dump(is_null($data->comment)); // Проверяем конкретное поле
var_dump(is_null($data->undefinedField)); // Предупреждение и true
bool(true)

Warning: Undefined property: stdClass::$undefinedField
bool(true)
Аналоги в других языках

Is null в Javascript

В JavaScript есть два похожих оператора: строгое (===) и нестрогое (==) сравнение с null. Также есть проверка typeof.

let value = null;
console.log(value === null); // true
console.log(typeof value);   // 'object' (историческая особенность)
true
'object'

Is null в Python

В Python аналогом null является None. Проверка осуществляется с помощью оператора is.

value = None
print(value is None) # True
print(value == None) # True (но рекомендуется использовать 'is')
True
True

Is null в MySQL

В SQL для проверки на NULL используется специальный оператор IS NULL или функция ISNULL().

SELECT * FROM users WHERE phone IS NULL;
SELECT ISNULL(phone) FROM users;

PHP is_null function comments

En
Is null Finds whether a variable is null