Сравнение с null: основные подходы и примеры
Методы проверки переменной на 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