Is null: примеры (PHP)
is_null(mixed $value): boolФункция 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 существует семейство функций для проверки типа переменной. Каждая из них служит своей цели.
Проверяет, объявлена ли переменная и не равна ли она null. Возвращает false для null и необъявленных переменных. is_null() для необъявленной переменной вызовет предупреждение, а isset() - нет.
Определяет, пуста ли переменная. Возвращает true для null, false, 0, пустой строки, массива без элементов. is_null() более строгая, она возвращает true только для null.
Строгое сравнение с константой null функционально идентично вызову is_null(), но не генерирует предупреждение для необъявленных переменных при использовании в комбинации с оператором контроля ошибок @ или проверкой на существование.
Рекомендация: Для проверки на null в коде, где переменная гарантированно существует, можно использовать любой метод. Если переменная может быть не объявлена, безопаснее использовать isset() с отрицанием или строгое сравнение ($var === null), которое быстрее функции.
Если передать в is_null() имя несуществующей переменной, будет сгенерировано предупреждение.
// Переменная $test не была объявлена ранее.
var_dump(is_null($test));Warning: Undefined variable $test bool(true)
Частая ошибка - считать, что 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 8.0 не было внесено значительных изменений в поведение функции is_null(). Однако общая тенденция в PHP 8 - усиление строгости типов и переход от предупреждений к исключениям в некоторых случаях. Это не затрагивает напрямую is_null(), но влияет на контекст её использования.
Рекомендуется в новом коде использовать объявление типов (type hints) с допущением null (например, ?string), что часто делает явную проверку is_null() внутри функции излишней.
function findUser($id) {
// ... поиск в базе данных
if (!$user) {
return null;
}
return $user;
}
$result = findUser(999);
if (is_null($result)) {
echo 'Пользователь не найден.';
}Пользователь не найден.
$data = ['name' => 'John', 'age' => null, 'city' => ''];
foreach ($data as $key => $value) {
if (is_null($value)) {
echo "Поле $key не заполнено (null).\n";
}
}Поле age не заполнено (null).
Важно помнить, что is_null() не выполняет приведение типов.
$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)); // truebool(false) bool(false) bool(false) bool(true) bool(true) bool(true) bool(true) bool(true)
$jsonString = '{"active": true, "comment": null}';
$data = json_decode($jsonString);
var_dump(is_null($data->comment)); // Проверяем конкретное поле
var_dump(is_null($data->undefinedField)); // Предупреждение и truebool(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;