Сравнение с null: основные подходы и примеры

Раздел: Основы PHP -> Работа с переменными

Методы проверки переменной на null

Как выполнить строгую проверку переменной на null?

Оператор === null обеспечивает точное сравнение значения и типа. Это наиболее эффективное решение, так как не требует вызова функции и исключает ложные срабатывания. Переменная может быть не определена - перед проверкой следует убедиться в её существовании через isset().

$var = null;
if ($var === null) {
    echo "Переменная равна null";
} else {
    echo "Переменная не равна null";
}

Php вывести значение (вывести значение переменной в php)

Переменная равна null

Php null value (нулевое значение php)

Типичная ошибка: использование = null (присваивание) или == null (нестрогое сравнение), которое интерпретирует null как false, 0 или пустую строку. Для неопределённой переменной оператор вызовет notice.

Как проверить переменную на null с помощью функции is_null()?

Функция is_null($var) возвращает true только для null. Удобна для читаемости кода, но не проверяет существование переменной.

$var = null;
if (is_null($var)) {
    echo "Переменная равна null";
}
$another = 0;
var_dump(is_null($another)); // false

Php var null (проверка переменной на null в php)

Переменная равна null
bool(false)

Php var array (массив в php (тип данных))

Ошибка: вызов is_null() для несуществующей переменной вызывает warning. Всегда проверяйте isset() перед is_null(), если переменная могла быть не определена.

Как проверить, что переменная определена и не null?

Конструкция isset($var) возвращает true, если переменная существует и не null. Широко используется при работе с массивами $_GET, $_POST и индексами.

$var = 0;
if (isset($var)) {
    echo "Переменная определена и не null";
}
// для null и неопределённой переменной isset вернёт false
$nullVar = null;
var_dump(isset($nullVar)); // false
Переменная определена и не null
bool(false)

Ошибка: ожидание, что isset() вернёт true для переменной со значением null. На самом деле null считается не установленным значением. Для проверки именно null используйте is_null() или === null.

Как проверить, что переменная пуста (включая null)?

empty($var) возвращает true для null, false, 0, пустой строки, массива без элементов. Подходит, когда любое «ложное» значение недопустимо.

$var = 0;
if (empty($var)) {
    echo "Переменная пуста";
}
$nullVar = null;
var_dump(empty($nullVar)); // true
Переменная пуста
bool(true)

Ошибка: empty() не различает null и другие пустые значения. Если требуется проверка только на null, используйте === null или is_null().

Как проверить тип переменной на соотвествие null через gettype()?

Сравнение gettype($var) === 'NULL' даёт тот же результат, но менее предпочтительно из-за избыточности и меньшей производительности.

$var = null;
if (gettype($var) === 'NULL') {
    echo "Переменная имеет тип NULL";
}
Переменная имеет тип NULL

Ошибка: gettype() возвращает строку в верхнем регистре, но путаница с регистром маловероятна. Главный недостаток - лишний вызов функции и менее читаемый код.

Расширенные примеры проверки на null

Дополнительные сценарии использования различных подходов к проверке null.

Пример 1. Проверка всех элементов массива на null

Используйте array_filter с callback-функцией, оставляющей только null элементы.

Пример
$items = [null, 'text', null, 0, false, null];
$nullItems = array_filter($items, function($v) {
    return $v === null;
});
print_r($nullItems);
Array
(
    [0] => 
    [2] => 
    [5] => 
)

Пример 2. Проверка nullable параметра функции

В PHP 7.1 можно объявить тип ?string, допускающий null. Проверка внутри функции.

Пример
function format(?string $input): string {
    if ($input === null) {
        return 'значение не предоставлено';
    }
    return strtoupper($input);
}
echo format(null);
echo format('hello');
значение не предоставлено
HELLO

Пример 3. Комбинирование is_null() с array_map()

Преобразование массива: заменить null на строку-заполнитель.

Пример
$data = ['a' => null, 'b' => 'value', 'c' => null];
$result = array_map(function($v) {
    return is_null($v) ? 'N/A' : $v;
}, $data);
print_r($result);
Array
(
    [a] => N/A
    [b] => value
    [c] => N/A
)

Пример 4. Проверка на null в цепочке методов (PHP 8 nullsafe)

Оператор ?-> позволяет безопасно обращаться к методам объекта, который может быть null.

Пример
class User {
    public ?Profile $profile = null;
}
class Profile {
    public string $name = 'John';
}
$user = new User();
// без nullsafe вызовет ошибку
$name = $user->profile?->name;
var_dump($name); // null
$user->profile = new Profile();
$name = $user->profile?->name;
var_dump($name); // 'John'
NULL
string(4) "John"

Пример 5. Использование match для проверки на null (PHP 8)

Выражение match позволяет компактно обрабатывать null и другие значения.

Пример
$var = null;
$result = match (true) {
    $var === null => 'null',
    $var === false => 'false',
    default => 'other'
};
echo $result; // null

$var = false;
echo match (true) {
    $var === null => 'null',
    $var === false => 'false',
    default => 'other'
}; // false
null
false

Пример 6. Проверка null при рекурсивном обходе данных

Функция рекурсивно проверяет вложенные массивы на наличие null-значений.

Пример
function hasNullRecursive(array $array): bool {
    foreach ($array as $value) {
        if (is_array($value)) {
            if (hasNullRecursive($value)) return true;
        } elseif ($value === null) {
            return true;
        }
    }
    return false;
}
$data = [1, [2, null, 4], 5];
echo hasNullRecursive($data) ? 'Обнаружен null' : 'Null не найден';
Обнаружен null

Проверка переменной на null в PHP - comments

En
Php var null (php)