Уроки PHP – Коли використовувати isset(), empty() та is_null() в PHP

Досить часто, при написанні PHP коду, виникають ситуації, коли робочий на вигляд код не працює. Після деяких досліджень, ви виявляєте, що використовували неправильну функцію для перевірки змінної в PHP. Існує багато функцій в PHP, які призначені для перевірки стану і значення змінних, в тому числі ті, які можуть повідомляти вам, чи є якесь значення, доступне взагалі для використання. Серед цих функцій, виділяються особливо три: isset(), empty() та is_null(), які легко переплутати.

В сьогоднішньому уроці ми розглянемо основні відмінності цих функцій, а також приклади їх використання в PHP.

Огляд функцій isset(), empty() та is_null() в PHP

Всі ці три функції вбудовані в PHP, тому при написанні коду вони завжди доступні для використання. Перші дві – empty() та isset() – це мовні конструкції, а is_null() – це стандартна функція. При перевірці коду необхідно пам’ятати, що мовні конструкції в PHP трохи швидші (але, чесно кажучи, не значно), їх не можна використовувати в змінних функції, і вони не видають помилки при оцінці змінних, яких не існує.

Давайте для початку розглянемо синтаксис і короткий опис цих трьох функцій, який зазначено в офіційному керівництві php.net.

Функція empty()

Синтаксис функції:

<?php
empty ( mixed $var ) : bool
?>

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

Функція isset()

Синтаксис функції:

<?php
isset ( mixed $var [, mixed $... ] ) : bool
?>

Визначає, чи встановлена ​​змінна, і чи не має вона значення NULL.

Якщо змінна була скинута (вилучена) з допомогою функції unset(), така змінна більше не буде встановлена. Функція isset() при тестуванні (перевірці) змінної поверне FALSE, якщо для неї встановлено значення NULL. Також зверніть увагу, що нульовий символ ("\0") не еквівалентний PHP константі NULL.

Якщо задано кілька параметрів, тоді isset() поверне TRUE, але тільки якщо всі параметри визначені. Оцінка йде зліва направо і зупиняється, як тільки зустрічається невстановлена ​​змінна.

Функція is_null()

Синтаксис функції:

<?php
is_null ( mixed $var ) : bool
?>

Визначає, чи є у даної змінної значення, рівне NULL.

У чому відмінність між функціями isset(), empty() та is_null() в PHP?

З наведених вище визначень видно, що ці три функції виконують подібні, але не однакові функції. За допомогою цих функцій ви можете перевіряти, чи є змінна нульовою (NULL), істинною (TRUE) або хибною (FALSE), а також чи була змінна оголошена.

Коли використовувати функцію empty()?

При використанні empty(), ви можете перевіряти, чи є змінна хибною (false), але також і те, чи існує змінна. Цю функцію найкраще використовувати, коли ви хочете переконатися, що змінна існує і має значення, яке не дорівнює false. Зверніть увагу, що PHP буде обробляти порожні рядки, цілі числа 0, числа з рухомою комою 0.0, порожні масиви і логічне значення false як false. Таким чином, в основному, використовуйте empty() тільки тоді, коли ви хочете переконатися, що в змінної є якесь фактичне значення.

Оскільки вам не потрібно оголошувати змінні перед їх використанням в PHP, ви можете опинитися в ситуації, коли ви намагаєтеся виконати дії або запустити іншу перевірку для змінної, яка ще не була оголошена. Хоча з цієї та інших причин рекомендується оголошувати змінні перед використанням, ця помилка – одна з причин того, що empty() використовується не так, як isset().

Коли використовувати функцію isset()?

Якщо ви використовуєте isset(), ви можете спеціально перевіряти, чи була змінна вже оголошена і що її значення не дорівнює null. Таким чином, поки у вас є оголошена змінна, у якої встановлено значення, але не значення NULL, при тесті ви отримаєте true. Це хороша умова для перевірки, перед виконанням інших перевірок для виконання дій зі змінною. Приклад:

<?php
$variable = 'Певний рядок'; // Оголошення змінної
// Перевірка існування змінної, потім перевірка значення
if ( isset($variable) && $variable !== 'Якийсь другий рядок' ) {
  echo 'Цей код спрацює, оскільки обидві умови вірні';
}
?>

У наведеному вище прикладі ми оголосили нашу змінну у вигляді рядка, а потім перевірили, чи встановлена ​​змінна (встановлена), і вона не дорівнює іншому рядку (вона не дорівнює). Оскільки обидві ці умови вірні, ми в цій умові можемо проводити подальші дії зі змінною та її значенням.

Коли використовувати функцію is_null()?

Нарешті, функція is_null() працює аналогічно функції isset(), з одною ключовою відмінністю: змінна повинна бути оголошена, щоб повернувся true, навіть за умови, що вона оголошена без будь-якого значення або визначена як NULL.

В іншому випадку функція is_null() не тільки не буде правильно працювати, але й буде повертати сповіщення через неможливість провести перевірку. Зазвичай сповіщення виглядає приблизно так:

Notice:  Undefined variable: variable in /{PATH}/ on line X

Оскільки isset() є мовною конструкцією і може обробляти змінні, що не були оголошені, зазвичай рекомендується використовувати isset() в більшості випадків. Якщо вам потрібно використовувати is_null(), вам потрібно знайти інший спосіб функціонування вашого коду.

Яку відповідь повертають функції isset(), empty() та is_null() в PHP

У наведеній нижче таблиці розглянуті основні результати використання даних функцій в PHP коді:

Значення змінної ($var) isset($var) empty($var) is_null($var)
“” (пустий рядок) bool(true) bool(true) bool(false)
” ” (пробіл) bool(true) bool(false) bool(false)
FALSE bool(true) bool(true) bool(false)
TRUE bool(true) bool(false) bool(false)
array() (пустий масив) bool(true) bool(true) bool(false)
NULL bool(false) bool(true) bool(true)
“0” (0 у вгляді рядка) bool(true) bool(true) bool(false)
0 (0 у вгляді цілого числа) bool(true) bool(true) bool(false)
0.0 (0 у вгляді числа з рухомою комою) bool(true) bool(true) bool(false)
змінна $var; (змінна оголошена, але без значення) bool(false) bool(true) bool(true)

На сьогодні все. Дякуємо, що читаєте нас!

Tags: php

Recent Posts

Як вивчити німецьку мову легко і весело? З допомогою Beste Freunde!

Німецька часто вважається складною мовою. Так, німецька лексика має «важкий» характер. Так, є дійсно дуже… Read More

27/09/2020

Опалення і гаряча вода коли треба, а не коли включать

Тепло в домі і гаряча вода в будь-який час для багатьох мешканців багатоквартирних та приватних… Read More

19/09/2020

Інструкція по завантаженню відео з сервісу TikTok (безкоштовно та без watermark)

Якщо ви ще не чули про TikTok, тоді рекомендуємо вам спочатку ознайомитися з цим коротким… Read More

17/09/2020

Що є в бюджетному ноутбуці – на які характеристики розраховувати?

Пройшли ті часи, коли пристойний ноутбук коштував від 1000 доларів. Сьогодні можна купити досить непоганий… Read More

16/09/2020

Що краще: цифрове телебачення Т2 чи інтернет-телебачення

Сучасне життя неможливо уявити без телебачення. Воно дозволяє дізнаватися про події в Україні та світі,… Read More

02/09/2020

Гіпоалергенна подушка. Чому вона важлива?

Зараз знайдеться мало людей, в яких немає алергії на продукти або пилок рослин. Вважається, що… Read More

28/08/2020