Отличия между empty от isset в php

В последнее время приходится работать с кодом, который был написан мной несколько лет назад.
Почти весь проект усыпан строчками, в которых четко видно непонимание разницы между функциями empty и isset, что и побудило меня написать эту заметку.

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

Функция empty()

Возвращает true в том случае, если переменная, которую она проверяет не была создана или содержит значение false (пустая строка, пустой массив, null, false, 0, 0.0, «0»).

Фукнция isset()

Возвращает true во всех случаях, когда переменная была создана и ее значение не равно NULL.

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

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

P.S. Вот код — виновник торжества:

$cities = $city->getList(); // здесь возвращался массив с данными или пустой массив
if ( isset($cities) ) { // Здесь всегда было true
    //...
}

Anatolii Koziura

Антураж-куражмонтаж в мире web разработки.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *