Эти функции часто путают, хотя они принципиально разные. Давайте разберём их работу детально.
bool isset(mixed $var [, mixed $...])
Проверяет:
null
Возвращает:
true
- если переменная определена и не nullfalse
- во всех остальных случаяхПримеры:
$var = 0;
isset($var); // true
isset($undefined); // false
isset(null); // false
Особенности:
isset($a, $b, $c); // true только если все три существуют
bool empty(mixed $var)
Проверяет, считается ли переменная "пустой". Возвращает true
для:
""
(пустая строка)0
(0 как integer)0.0
(0 как float)"0"
(0 как string)null
false
[]
(пустой массив)Примеры:
empty(0); // true
empty(""); // true
empty(null); // true
empty([]); // true
empty("Hello"); // false
empty(1); // false
Важно: empty()
эквивалентна !isset($var) || $var == false
Значение | isset() | empty() |
---|---|---|
$unset |
false | true |
null |
false | true |
0 |
true | true |
"" |
true | true |
false |
true | true |
[] |
true | true |
"0" |
true | true |
1 |
true | false |
"text" |
true | false |
isset() когда нужно:
empty() когда нужно:
empty()
- это языковая конструкция, а не функция, поэтому нельзя использовать как callbackempty()
работала только с переменными, не с выражениямиempty(trim($name)); // До PHP 5.5 - ошибка
isset()
проверяет существование и не-null значение, тогда как empty()
определяет "пустоту" значения. Для проверки форм часто используют !empty()
, так как это охватывает случаи с пустыми строками и нулями.