Проверка переменных позволяет избежать множества ошибок при выполнении кода и сберечь нервы. Очень часто для проверки переменной ее подставляют в качестве выражения условного оператора, что не является полноценной проверкой и не обезопасит от появления ошибок.
Переменные в PHP
Переменная PHP может находиться в одном из следующих состояний:
- не определена,
- определена, но не имеет значения (пустая),
- определена и имеет значение.
$var
Если в качестве условия использовать саму переменную, условие выполнится только если переменная определена и имеет значение, отличное от нулевого (не 0,не пустая строка, не пустой массив)
is_null()
Данная функция вернет true, если переменная не определена (или была удалена с помощью unset()), или переменной присвоена константа NULL. В остальных случаях функция вернет false.
isset()
Данная функция является противоположностью is_null(), определяет была ли установлена переменная со значением не равным NULL.
Вернет false для неопределенной переменной и переменной с установленным значением NULL.
empty()
Функция проверяет переменные на пустоту. Пустыми считаются неопределенные переменные, переменные с установленным значением NULL, с числовым значение 0, строки содержащие символ 0, а также пустые строки и незаполненные массивы.
Функция по сути проверяет следующее выражение:
empty($var) === (!isset($var) || $var==false)
Итоги
Ниже для удобства сравнения приведена сравнительная таблица:
$var | is_null($var) | isset($var) | empty($var) | |
---|---|---|---|---|
неопределенная переменная | false | true | false | true |
NULL | false | true | false | true |
0 | false | false | true | true |
"0" - строка со значением 0 | false | false | true | true |
'' - пустая строка | false | false | true | true |
' ' - строка из пробела | true | false | true | false |
array() - пустой массив | false | false | true | true |
FALSE | false | false | true | true |
123 | true | false | true | false |
"непустая строка" | true | false | true | false |
array("1","Второй", 3) | true | false | true | false |
TRUE | true | false | true | false |