Досить часто, при написанні PHP коду, виникають ситуації, коли робочий на вигляд код не працює. Після деяких досліджень, ви виявляєте, що використовували неправильну функцію для перевірки змінної в PHP. Існує багато функцій в PHP, які призначені для перевірки стану і значення змінних, в тому числі ті, які можуть повідомляти вам, чи є якесь значення, доступне взагалі для використання. Серед цих функцій, виділяються особливо три: isset(), empty() та is_null(), які легко переплутати.
В сьогоднішньому уроці ми розглянемо основні відмінності цих функцій, а також приклади їх використання в PHP.
Всі ці три функції вбудовані в PHP, тому при написанні коду вони завжди доступні для використання. Перші дві – empty()
та isset()
– це мовні конструкції, а is_null()
– це стандартна функція. При перевірці коду необхідно пам’ятати, що мовні конструкції в PHP трохи швидші (але, чесно кажучи, не значно), їх не можна використовувати в змінних функції, і вони не видають помилки при оцінці змінних, яких не існує.
Давайте для початку розглянемо синтаксис і короткий опис цих трьох функцій, який зазначено в офіційному керівництві php.net.
Синтаксис функції:
<?php empty ( mixed $var ) : bool ?>
Визначає, чи є змінна порожньою. Змінна вважається порожньою, якщо вона не існує або якщо її значення дорівнює FALSE
. При цьому, якщо змінна не існує, функція empty()
не видає попередження.
Синтаксис функції:
<?php isset ( mixed $var [, mixed $... ] ) : bool ?>
Визначає, чи встановлена змінна, і чи не має вона значення NULL
.
Якщо змінна була скинута (вилучена) з допомогою функції unset()
, така змінна більше не буде встановлена. Функція isset()
при тестуванні (перевірці) змінної поверне FALSE
, якщо для неї встановлено значення NULL
. Також зверніть увагу, що нульовий символ ("\0"
) не еквівалентний PHP константі NULL
.
Якщо задано кілька параметрів, тоді isset()
поверне TRUE
, але тільки якщо всі параметри визначені. Оцінка йде зліва направо і зупиняється, як тільки зустрічається невстановлена змінна.
Синтаксис функції:
<?php is_null ( mixed $var ) : bool ?>
Визначає, чи є у даної змінної значення, рівне NULL
.
З наведених вище визначень видно, що ці три функції виконують подібні, але не однакові функції. За допомогою цих функцій ви можете перевіряти, чи є змінна нульовою (NULL), істинною (TRUE) або хибною (FALSE), а також чи була змінна оголошена.
При використанні empty()
, ви можете перевіряти, чи є змінна хибною (false), але також і те, чи існує змінна. Цю функцію найкраще використовувати, коли ви хочете переконатися, що змінна існує і має значення, яке не дорівнює false
. Зверніть увагу, що PHP буде обробляти порожні рядки, цілі числа 0, числа з рухомою комою 0.0, порожні масиви і логічне значення false
як false. Таким чином, в основному, використовуйте empty()
тільки тоді, коли ви хочете переконатися, що в змінної є якесь фактичне значення.
Оскільки вам не потрібно оголошувати змінні перед їх використанням в PHP, ви можете опинитися в ситуації, коли ви намагаєтеся виконати дії або запустити іншу перевірку для змінної, яка ще не була оголошена. Хоча з цієї та інших причин рекомендується оголошувати змінні перед використанням, ця помилка – одна з причин того, що empty()
використовується не так, як isset()
.
Якщо ви використовуєте isset()
, ви можете спеціально перевіряти, чи була змінна вже оголошена і що її значення не дорівнює null
. Таким чином, поки у вас є оголошена змінна, у якої встановлено значення, але не значення NULL
, при тесті ви отримаєте true
. Це хороша умова для перевірки, перед виконанням інших перевірок для виконання дій зі змінною. Приклад:
<?php $variable = 'Певний рядок'; // Оголошення змінної // Перевірка існування змінної, потім перевірка значення if ( isset($variable) && $variable !== 'Якийсь другий рядок' ) { echo 'Цей код спрацює, оскільки обидві умови вірні'; } ?>
У наведеному вище прикладі ми оголосили нашу змінну у вигляді рядка, а потім перевірили, чи встановлена змінна (встановлена), і вона не дорівнює іншому рядку (вона не дорівнює). Оскільки обидві ці умови вірні, ми в цій умові можемо проводити подальші дії зі змінною та її значенням.
Нарешті, функція is_null()
працює аналогічно функції isset()
, з одною ключовою відмінністю: змінна повинна бути оголошена, щоб повернувся true, навіть за умови, що вона оголошена без будь-якого значення або визначена як NULL
.
В іншому випадку функція is_null()
не тільки не буде правильно працювати, але й буде повертати сповіщення через неможливість провести перевірку. Зазвичай сповіщення виглядає приблизно так:
Notice: Undefined variable: variable in /{PATH}/ on line X
Оскільки isset()
є мовною конструкцією і може обробляти змінні, що не були оголошені, зазвичай рекомендується використовувати isset()
в більшості випадків. Якщо вам потрібно використовувати is_null()
, вам потрібно знайти інший спосіб функціонування вашого коду.
У наведеній нижче таблиці розглянуті основні результати використання даних функцій в 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) |
На сьогодні все. Дякуємо, що читаєте нас!
Навчання за кордоном вже давно асоціюється з якісною освітою, новими можливостями та безліччю перспектив. Але…
Вибір майстра для ремонту та перетяжки меблів – завдання, яке потребує вдумливого підходу. Адже від…
Вибір ідеального хостингу під свій сайт може бути досить заплутаною справою, особливо коли існує багато…
Щоб уникати помилок, потрібно набиратися досвіду; щоб набиратися досвіду, потрібно робити помилки Лоуренс Пітер
Коротке визначення Чорного SEO Чорне СЕО (або Чорна оптимізація) — це будь-яка практика, метою якої…
Отримання прав водія категорії C відкриває двері до професійної діяльності, пов'язаної з керуванням вантажними автомобілями.…