(PHP 4, PHP 5, PHP 7)
empty — Проверяет, пуста ли переменная
Проверяет, считается ли переменная пустой. Переменная считается пустой, если она не существует или её значение равно FALSE. empty() не генерирует предупреждение если переменная не существует.
varПроверяемая переменная
Замечание:
До PHP 5.5 empty() проверяет только переменные, и попытка проверить что-то еще вызовет ошибку синтаксиса. Другими словами, следующий код не будет работать: empty(trim($name)). Используйте вместо него trim($name) == false.
Если переменная не существует, предупреждение не генерируется. Это значит, что empty() фактически является точным эквивалентом конструкции !isset($var) || $var == false
Возвращает FALSE, если var существует, и содержит непустое и ненулевое значение.
В противном случае возвращает TRUE.
Следующие значения воспринимаются как пустые:
NULLFALSE
| Версия | Описание |
|---|---|
| 5.5.0 |
empty() теперь поддерживает выражения, а не только переменные. |
| 5.4.0 |
Проверка нечислового индекса строки возвращает |
Пример #1 Простое сравнение empty() и isset().
<?php
$var = 0;
// Принимает значение true, потому что $var пусто
if (empty($var)) {
echo '$var или 0, или пусто, или вообще не определена';
}
// Принимает значение true, потому что $var определена
if (isset($var)) {
echo '$var определена, даже если она пустая';
}
?>
Пример #2 empty() и строковые индексы
В PHP 5.4 был изменен способ обработки строковых индексов в empty().
<?php
$expected_array_got_string = 'somestring';
var_dump(empty($expected_array_got_string['some_key']));
var_dump(empty($expected_array_got_string[0]));
var_dump(empty($expected_array_got_string['0']));
var_dump(empty($expected_array_got_string[0.5]));
var_dump(empty($expected_array_got_string['0.5']));
var_dump(empty($expected_array_got_string['0 Mostel']));
?>
Результат выполнения данного примера в PHP 5.3:
bool(false) bool(false) bool(false) bool(false) bool(false) bool(false)
Результат выполнения данного примера в PHP 5.4:
bool(true) bool(false) bool(false) bool(false) bool(true) bool(true)
Замечание: Поскольку это языковая конструкция, а не функция, она не может вызываться при помощи переменных функций.
Замечание:
При использовании функции empty() на недоступных (необъявленных) свойствах объекта будет вызван встроенный метод объекта __isset(), если он определен.