Відмінності між 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
//...
}