← Повернутись до блогу

Відмінності між empty та isset у PHP

June 2019 1 хвилина на читання 204 перегляди

Останнім часом доводиться працювати з кодом, який був написаний мною кілька років тому.
Майже весь проект всіяний рядками, в яких чітко видно нерозуміння різниці між функціями empty і isset, що й спонукало мене написати цю замітку.

Відмінності між цими функціями дуже легко запам’ятати, особливо якщо вчишся на власних помилках 🙂

Функція empty()

Повертає true у тому випадку, якщо змінна, яку вона перевіряє, не була створена або містить значення false (порожній рядок, порожній масив, null, false, 0, 0.0, "0").

Функція isset()

Повертає true у всіх випадках, коли змінна була створена і її значення не дорівнює NULL.

Результат роботи функцій isset() та empty()

$var = empty($var) isset($var) Пояснення
(не створена) true false Змінна не створювалась
unset($var) true false Змінна була видалена
$var = NULL true false Створена зі значенням false (NULL == false)
$var = «» true true Порожній рядок
$var = [] true true Порожній масив
$var = 0 true true Створена зі значенням false (0 == false)
$var = false true true Значення false
$var = true false true Змінна створена, значення != false
$var = 192 false true Змінна створена, значення != false
$var = [1,10,40] false true Непорожній масив

Непорожній масив

P.S. Ось код — винуватець свята:

$cities = $city->getList(); // тут повертався масив з даними або порожній масив
if ( isset($cities) ) { // Тут завжди було true
    //...
}
2018–2025 (c) Списуй але не один в один