empty

(PHP 4, PHP 5, PHP 7, PHP 8)

emptyПеревіряє чи змінна є пустою

Опис

empty(mixed $var): bool

Визначає чи вважається змінна порожньою. Змінна вважається порожньою, якщо її не ініціалізовано, або її значення еквівалентне до false. Функція empty() не генерує попередження, якщо змінна не ініціалізована.

Параметри

var

Змінна для перевірки

Зауваження:

В раніших версіях, за PHP 5.5, empty() підтримувала тільки змінні; будь-що інше спричиняло синтаксичну помилку. Іншими словами, ось такий код не працював: empty(trim($name)). Щоб уникнути помилки використовуйте trim($name) == false.

Не видає попередження, якщо змінна не ініціалізована. Тобто роботу empty() можна описати таким еквівалентним виразом !isset($var) || $var == false.

Значення, що повертаються

Повертає false, якщо var ініціалізовано та вона має непусте та ненульове значення. В противному разі повертає true.

Значення наступних варіантів вважається пустим:

  • "" (пустий рядок)
  • 0 (0 як ціле число)
  • 0.0 (0 як дробне число)
  • "0" (0 як рядок)
  • null
  • false
  • array() (пустий масив)
  • $var; (змінну оголошено, але вона не має значення)

Журнал змін

Версія Опис
5.5.0

empty() тепер підтримує вирази, а не тільки змінні.

5.4.0

При перевірці нечислових зміщень рядка, повертається true.

Приклади

Приклад #1 Порівняння роботи функцій empty() та isset().

<?php
$var
= 0;

// Оцінюється як true, оскільки $var має значення 0,
// який empty() вважає пустим значенням
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['певний_ключ']));
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(), якщо його оголошено.

Прогляньте також