(PHP 4, PHP 5, PHP 7, PHP 8)
empty — Проверяет, пуста ли переменная
Языковая конструкция проверяет, считает ли PHP переменную пустой.
PHP считает переменную пустой, если она не существует или значение переменной равно false
.
Языковая конструкция empty() не генерирует предупреждение,
если переменная не существует.
var
Проверяемая переменная.
Предупреждение не генерируется, если переменная не существует. Это означает, что конструкция empty() представляет краткий эквивалент выражения !isset($var) || $var == false. Это также касается вложенных структур наподобие многомерных массивов или обращения к свойствам по цепочке.
Возвращает true
, если переданная в параметр var
переменная не существует,
содержит пустое значение или равно нулю, то есть ложно,
подробнее о приведении значений к логическим типам рассказано
в параграфе преобразование в логический тип.
В остальных случаях возвращает false
.
Пример #1 Простое сравнение языковых конструкций empty() и isset().
<?php
$var = 0;
// Принимает значение true, потому что переменная $var содержит пустое значение
if (empty($var)) {
echo '$var или 0, или пусто, или вообще не определена';
}
// Принимает значение true, потому что переменная $var определена
if (isset($var)) {
echo '$var определена, даже если она пустая';
}
?>
Пример #2 Конструкция 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 Mostel']));
?>
Результат выполнения приведённого примера:
bool(true) bool(false) bool(false) bool(true) bool(true)
Пример #3 Пример поведения конструкции empty() на многомерных массивах
<?php
$multidimensional = [
'some' => [
'deep' => [
'nested' => 'value'
]
]
];
if (!empty($multidimensional['some']['some']['nested'])) {
$someVariable = $multidimensional['some']['deep']['nested'];
}
var_dump(empty($multidimensional['some-undefined-key']));
var_dump(empty($multidimensional['some']['deep']['unknown']));
var_dump(empty($multidimensional['some']['deep']['nested']));
?>
Результат выполнения приведённого примера:
bool(true) bool(true) bool(false)
Замечание: Поскольку это языковая конструкция, а не функция, её нельзя вызывать как функцию переменной или передавать как именованный аргумент.
Замечание:
При вызове языковой конструкции empty() на недоступных (необъявленных, защищённых или закрытых) свойствах объекта вызывается метод перегрузки — __isset(), если он определён.