isset
Определите, считается ли переменная установленной, это означает, что переменная объявлена и отличается от null .
Если переменная была сброшена с помощью функции unset () , она больше не считается установленной.
isset () вернет false при проверке переменной, которой присвоено значение null . Также обратите внимание, что нулевой символ ( «\0» ) не эквивалентен null константе PHP .
Если указано несколько параметров, isset () вернет true только в том случае, если все параметры считаются установленными. Оценка идет слева направо и останавливается, как только обнаруживается неустановленная переменная.
Parameters
Return Values
Возвращает true , если var существует и имеет любое значение, кроме null . false противном случае — ложь .
Examples
Пример # 1 Примеры использования isset ()
$var = ''; // This will evaluate to TRUE so the text will be printed. if (isset($var)) < echo "This var is set so I will print."; > // In the next examples we'll use var_dump to output // the return value of 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 ?>
Это также работает для элементов в массивах:
$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 // The key 'hello' equals NULL so is considered unset // If you want to check for NULL key values then try: var_dump(array_key_exists('hello', $a)); // TRUE // Checking deeper array values var_dump(isset($a['pie']['a'])); // TRUE var_dump(isset($a['pie']['b'])); // FALSE var_dump(isset($a['cake']['a']['b'])); // FALSE ?>
Пример # 2 isset () для смещения строк
$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)
Notes
isset () работает только с переменными, поскольку передача чего-либо еще приведет к ошибке синтаксического анализа. Чтобы проверить, установлены ли константы , используйте функцию defined () .
Примечание . Поскольку это языковая конструкция, а не функция, ее нельзя вызывать с помощью переменных функций или именованных аргументов .
Note:
При использовании isset () для недоступных свойств объекта будет вызван метод перегрузки __isset () , если он объявлен.
See Also
- empty () — определяет, пуста ли переменная
- __isset()
- unset () — Сбросить заданную переменную
- defined () — Проверяет, существует ли заданная именованная константа
- таблицы сравнения типов
- array_key_exists () — Проверяет, существует ли данный ключ или индекс в массиве
- is_null () — Проверяет , является ли переменная нулевой
- оператор контроля ошибок @
PHP 8.2
(PHP 4,5,7,8)is_writable Говорит о том,доступно ли имя файла Возвращает true,если имя файла существует и доступно для записи.
(PHP 4,5,7,8)is_writeable Псевдоним функции is_writable()Эта функция является псевдонимом функции:is_writable().
(PHP 5 5.1.0,7,8)iterator_apply Вызывает функцию для каждого элемента в итераторе Вызывает функцию для каждого элемента в итераторе.
Проверка на существование и пустоту в PHP
Часто возникают ситуации, когда нужно проверить существование или пустоту переменной. В PHP для этого есть функции isset() , empty() и array_key_exists() .
Проверка существования переменной
Функция isset() возвращает true , если переменная существует и её значение не null :
Если передать в isset несколько переменных, она вернёт true при существовании всех переменных:
'; echo isset($name, $age, $status) ? 'Василиса есть' : 'Василисы нет';
Василиса есть Василисы нет
Операторы объединения с NULL
В PHP 7 появился оператор объединения с NULL (или NULL-коалесцентный оператор) ?? . Он позволяет получить значение переменной, если она задана и не равна NULL, а иначе — значение по-умолчанию:
В PHP 7.4 появился присваивающий оператор объединения с NULL ??= .Он позволяет удобно задать значение переменной, если эта переменная ещё не задана (либо равна NULL):
// Как было раньше $name = $name ?? 'Василий'; // Как стало в PHP 7.4 $name ??= 'Василий';
Проверка на пустоту
Напомню, переменная считается пустой (приводится к false), если она имеет одно из следующих значений:
- 0 (целое или дробное)
- » (пустая строка)
- ‘0’ (строка с числом 0)
- [] (пустой массив)
- null
Функция empty() возвращает true , если переменная не существует или пустая:
Поведение isset() и empty() сначала может немного запутать: первая возвращает true при существовании переменной, вторая — при не существовании. К этому нужно просто привыкнуть.
На самом деле isset() и empty() , аналогично echo , являются синтаксическими конструкциями, а не функциями.
Функции isset() и empty() гасят ошибку обращения к несуществующей переменной. Это одна из причин, почему они не являются обычными функциями.
ceil($var); // Notice: Undefined variable: var isset($var); // Ошибки нет
Существование элемента массива
Как мы узнали чуть выше, isset() возвращает false , если переменная существует, но имеет значение null .
Бывают ситуации, когда нам необходимо точно знать, существует ли определённый элемент массива или нет, даже если его значение NULL.
Для этого в PHP существует функция array_key_exists() :
isset
Если переменная была удалена с помощью unset() , то она больше не считается установленной. isset() вернет FALSE , если проверяемая переменная имеет значение NULL . Следует помнить, что NULL -байт («\0») не является эквивалентом константе PHP NULL .
Если были переданы несколько параметров, то isset() вернет TRUE только в том случае, если все параметры определены. Проверка происходит слева направо и заканчивается, как только будет встречена неопределенная переменная.
Список параметров
Возвращаемые значения
Возвращает TRUE , если var определена и значение отличное от NULL , и FALSE в противном случае.
Список изменений
Проверка нечислового индекса строки теперь возвращает FALSE .
Примеры
Пример #1 Пример использования isset()
// Проверка вернет TRUE, поэтому текст будет напечатан.
if (isset( $var )) echo «Эта переменная определена, поэтому меня и напечатали.» ;
>
// В следующем примере мы используем var_dump для вывода
// значения, возвращаемого isset().
var_dump (isset( $a )); // TRUE
var_dump (isset( $a , $b )); // TRUE
var_dump (isset( $a )); // FALSE
var_dump (isset( $a , $b )); // FALSE
$foo = NULL ;
var_dump (isset( $foo )); // FALSE
Функция также работает с элементами массивов:
$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() .
$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
Результат выполнения данного примера в 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(), если он существует.
Смотрите также
- empty() — Проверяет, пуста ли переменная
- __isset()
- unset() — Удаляет переменную
- defined() — Проверяет существование указанной именованной константы
- Таблица сравнения типов
- array_key_exists() — Проверяет, присутствует ли в массиве указанный ключ или индекс
- is_null() — Проверяет, является ли значение переменной равным NULL
- Оператор управления ошибками @