(PHP 4, PHP 5, PHP 7, PHP 8)
isset — Визначає, чи для змінної встановлено значення та воно не рівне null
Визначає, чи для змінної встановлено значення та воно не рівне null
.
Якщо змінну було видалено через unset(), то вона більше
не вважається встановленою. При перевірці змінної зі значенням null
,
isset() буде повертати false
.
Також зауважте, що символ null
("\0"
) не є еквівалентом
PHP-константі null
.
Якщо буде передаватись кілька параметрів, то isset() буде
повертати true
, тільки якщо всі параметри мають встановлене значення.
Оцінювання відбуватиметься зліва на право та зупинеться там, де зустріне
змінну, для якої не встановлено значення.
var
Змінна, яка буде перевірятись.
...
Інша змінна ...
Повертає true
, якщо var
існує та має інше значення,
ніж null
, в противному разі - false
.
Приклад #1 Використання isset()
<?php
$var = '';
// Цей вираз оцінюватиметься як дійсний, а тому текст буде надруковано.
if (isset($var)) {
echo "Цій змінній встановлено значення, отже текст надрукується.";
}
// В наступних прикладах ми будемо використовувати var_dump() для виводу
// значень, що повертає isset().
$a = "перевірка";
$b = "іншаперевірка";
var_dump(isset($a)); // TRUE
var_dump(isset($a, $b)); // TRUE
unset ($a);
var_dump(isset($a)); // FALSE
var_dump(isset($a, $b)); // FALSE
$foo = NULL;
var_dump(isset($foo)); // FALSE
?>
Функція також працює з елементами масива:
<?php
$a = array ('test' => 1, 'hello' => NULL, 'pie' => array('a' => 'apple'));
var_dump(isset($a['test'])); // TRUE
var_dump(isset($a['foo'])); // FALSE
var_dump(isset($a['hello'])); // FALSE
// Ключ 'hello' еквівалентний NULL, а тому вважається, що для нього не встановлено значення
// Якщо ви хочете перевірити значення ключа на наявність NULL, спробуйте це зробити так:
var_dump(array_key_exists('hello', $a)); // TRUE
// Перевірка глибших значень в масиві
var_dump(isset($a['pie']['a'])); // TRUE
var_dump(isset($a['pie']['b'])); // FALSE
var_dump(isset($a['cake']['a']['b'])); // FALSE
?>
Приклад #2 Робота isset() при рядковому зміщенні
PHP 5.4 змінює те, як isset() поводиться при передачі рядкового зміщення.
<?php
$expected_array_got_string = 'somestring';
var_dump(isset($expected_array_got_string['some_key']));
var_dump(isset($expected_array_got_string[0]));
var_dump(isset($expected_array_got_string['0']));
var_dump(isset($expected_array_got_string[0.5]));
var_dump(isset($expected_array_got_string['0.5']));
var_dump(isset($expected_array_got_string['0 Mostel']));
?>
В PHP 5.3 поданий вище приклад виведе:
bool(true) bool(true) bool(true) bool(true) bool(true) bool(true)
В PHP 5.4 поданий вище приклад виведе:
bool(false) bool(true) bool(true) bool(true) bool(false) bool(false)
isset() працює тільки зі змінними, передача будь-чого іншого спричинятиме виведення синтаксичної помилки. Для перевірки, чи встановлено значення для констант, використовуйте функцію defined().
Зауваження: Оскільки це мовна конструкція, а не функція, її не можна викликати через змінні-функції або названі параметри.
Зауваження:
При використанні isset() для перевірки недоступних властивостей об'єкта, буде викликатись метод __isset(), якщо його оголошено.