English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
isset() Функция используется для проверки, установлена ли переменная и не равна NULL.
Если переменная уже была освобождена с помощью unset(), то при использовании isset() возвращается FALSE.
Если использовать isset() для проверки переменной, установленной в NULL, то возвращается FALSE.
Кроме того, следует отметить, что нулевая строка ("\0") не эквивалентна константному значению NULL в PHP.
Требования к версии PHP: PHP 4, PHP 5, PHP 7
bool isset ( mixed $var [, mixed $... ] )
Описание параметров:
Если передается несколько параметров, то isset() возвращает TRUE только если все параметры установлены, процесс вычисления идет слева направо, и при встрече переменной, не установленной, процесс немедленно останавливается.
Если переменная указана и не равна NULL, то возвращается TRUE, в противном случае FALSE.
<?php $var = ''; // Результат TRUE, поэтому следующий текст будет напечатан. if (isset($var)) { echo "Переменная установлена." . PHP_EOL; } // В следующих примерах мы будем использовать var_dump для вывода значения функции isset(). // значение возвращаемое функцией isset(). $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 ?>
Результат вывода:
Переменная установлена. bool(true) bool(true) bool(false) bool(false) bool(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 ?>
Результат вывода:
bool(true) bool(false) bool(false) bool(true) bool(true) bool(false) bool(false)
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)