(PHP 4, PHP 5, PHP 7, PHP 8)
isset — Определяет, объявили ли переменную и отличается ли её значение от null
Языковая конструкция определяет, установили ли переменную.
Установленная переменная — переменная, которую объявили и присвоили значение,
которое не равняется null.
PHP не считает переменную установленной, если переменную удалили языковой конструкцией unset().
Языковая конструкция isset() вернёт false при проверке переменной,
для которой установили значение null.
Обратите внимание, что NULL-символ "\0" не эквивалентен
PHP-константе null.
При передаче набора аргументов конструкция isset()
вернёт true, только если результат каждого выражения в списке аргументов определён.
Проверка выполняется слева направо и останавливается,
как только обнаруживается неустановленная переменная.
varПеременная, которую требуется проверить.
varsДополнительные переменные.
Языковая конструкция возвращает true, если переменную var объявили
и значение переменной не равняется null, иначе возвращает false.
Пример #1 Пример проверки переменной языковой конструкцией isset()
<?php
$var = '';
// Проверка вернёт TRUE, поэтому PHP выведет текст
if (isset($var)) {
echo "Эту переменную установили, поэтому я выведу её.";
}
// В следующих примерах для вывода значения, которое возвращает языковая конструкция isset(),
// вызывается функция var_dump
$a = "test";
$b = "anothertest";
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
$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']));
?>Результат выполнения приведённого примера:
bool(false) bool(true) bool(true) bool(true) bool(false) bool(false)
Конструкция isset() работает только с переменными, поэтому передача в аргументах других значений выдаст ошибку синтаксического анализа. Для проверки определения констант пользуются функцией defined().
Замечание: Конструкцию нельзя вызывать как функцию переменной или передавать как именованный аргумент, поскольку это языковая конструкция, а не функция.
Замечание:
При вызове конструкции isset() на недоступных свойствах объекта вызывается магический метод перегрузки __isset(), если магический метод определили в классе.