В PHP проверка переменных может быть реализована многими путями. Есть функции проверки типа данных вроде is_array
, is_object
или is_bool
, есть функции, которые могут проверить соответствие нескольким условиям одновременно. Сегодня мы поговорим о различиях между is_null()
, empty()
и isset()
. Для начала давайте разберемся, что каждая из них делает.
Эта функция проверяет переменную только на равенство нулю, но она не сможет выявить неопределенную переменную или пустую.
<?php
$myvar = NULL; is_null($myvar); // возвращает TRUE
$myvar = 0; is_null($myvar); // возвращает FALSE
$myvar = FALSE; is_null($myvar); // возвращает FALSE
$myvar = ''; is_null($myvar); // возвращает FALSE
is_null($some_undefined_var); // возвращает TRUE ... но выдает сообщение о том, что переменной $some_undefined_var не существует
Пожалуйста, обратите внимание, что нулевая переменная - не то же самое, что и неопределенная. При том, что они обе возвращают NULL, PHP выдает предупреждающее сообщение: "Notice: Undefined variable: X in..."
Эта функция определяет определена ли (т. е. существует) переменная в вашем скрипте. Однако, isset() видит переменные с нулевым значением также, как и неопределенные (если воспринимать возвращаемый ею результат буквально).
<?php
$myvar = NULL; isset($myvar); // возвращает FALSE
$myvar = 0; isset($myvar); // возвращает TRUE
$myvar = FALSE; isset($myvar); // возвращает TRUE
$myvar = ''; isset($myvar); // возвращает TRUE
isset($some_undefined_var); // возвращает FALSE
Эта функция проверяет переменную на "ложное" в терминах PHP (пустое) значение. Переменная будет считаться пустой, если она не определена, NULL, FALSE, 0 или содержит пустую строку.
Чтобы яснее себе представить как работает empty()
... вы должны представить результат, возвращаемый !isset($var) || $var==false
.
<?php
$myvar = NULL; empty($myvar); // возвращает TRUE
$myvar = 0; empty($myvar); // возвращает TRUE
$myvar = FALSE; empty($myvar); // возвращает TRUE
$myvar = ''; empty($myvar); // возвращает TRUE
empty($some_undefined_var); // возвращает TRUE
В заключение хочется напомнить вам о необходимости ВСЕГДА проверять переменные. В PHP, который не является строго типизированным языком программирования, очень важно, чтобы программист уделял этому особое внимание.