Равна ли переменная null в PHP
Для защиты сайта от неправильного поведения кода и поддержания работоспособности ресурса в случае проблем с каким-либо содержимым следует делать разнообразные проверки перед вызовом файлов, запуском обработчиков, выполнением важных скриптов. Одной из функций, выполняющих данную роль, является is_null();.
Описание функции
Название is_null(); говорит само за себя – с её помощью можно узнать, равно ли значение какой-либо переменной NULL или существует ли вовсе. Возможность добавлена в PHP 4, с тех пор её в синтаксисе не произошло каких-либо обновлений, однако скорость проверки возросла вместе с улучшением ядра языка программирования.
Принцип работы у функции отличается от empty();и isset();. В случае с empty();: она выдаст значение true («Булев тип»), если проверяемая переменная пуста, равна 0 либо не определена. А isset(); вернёт «истина» только если переменная определена в коде, её значение не проверяется – подойдут также пустые значения. Например, следующий код приведёт к данным значениям, выводимым в результате трёх проверок:
<?
$variable = 0;
// Вернёт true, так как $variable = 0, пуста или не определена
if(empty($variable)) {
echo»$variable или 0, или пуста, или не определена».»<br>»;
}
// Вернёт true, так как $variable НЕ РАВЕН NULL.
if(!is_null($variable)) {
echo»$variable неравно NULL».»<br>»;
}
// Вернёт true, так как $variable определена
if(isset($variable)) {
echo»$variable определена».»<br>»;
}
/* Результат:
0 или 0, или пуста, или не определена
0 не равно NULL
0 определена
*/
?>
В седьмой версии PHP разработчикам среды удалось достичь быстрой интерпретации функции сравнительно проверки ===NULL, составляющей примерно 5 наносекунд, но становящейся весомой при обработке большого объёма значений. В спецификации 5.5.9 ситуация хуже – там большей скоростью наделён ===NULL, при этом разница тоже существенна – примерно в 2 раза.
Оператор объединения с null();
Данная особенность стала нововведением PHP 7.0, призванным сэкономить время при написании кода, при этом не ухудшив его чтение человеком.
<?
// В этом примере: извлекаем из POST-запроса пароль, а если он отсутствует, задаём вместо него unprotected.
$password = isset($_POST[‘password’]) ? $_POST[‘password’] : ‘unprotected’;
// То же самое, но с использованием оператора объединения с null();
$password = $_POST[‘password’] ?? ‘unprotected’;
Как использовать
Проверка необъявленной переменной
В следующем примере is_null(); задействуется для проверки переменной, которая вообще не задаётся по ходу программы.
<?
if(is_null($abc)) {
echo»Переменной abc не существует»;
}
Проверка переменной, равной NULL
Отличие этого сценария использования от предыдущего заключается в том, что переменная объявляется, как заведомо равная NULL. Более реалистичным покажется вариант, когда такое значение задаётся в результате проверки по принципу if-elseif-else.
<?
$abc = NULL;
if(is_null($abc)) {
echo»Переменная abc равна NULL»;
}
Чтобы проверить, указано ли, что переменная равна NULL вручную, или это связано с отсутствием её определения в коде, следует воспользоваться isset();.