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

Уроки 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)

 

 

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

 



Напишіть тут свою думку/питання

Ваша пошта не публікуватиметься. Обов’язкові поля позначені *