Что такое isset в php
Перейти к содержимому

Что такое isset в php

Что такое isset в php

Если переменная объявлена, но ей изначально не присвоено никакого значения (иначе говоря она не инициализирована), или если переменная вовсе неопределена, то нам будет проблематично ее использовать. Например:

При попытке вывести значение переменной мы получим диагностическое сообщение о том, что переменная не определена:

Ситуация может показатся искуственной. Тем не менее нередко переменные в PHP получают некоторые данные извне, например, ввод пользователя. Соответственно возникает необходимость перед использованием данных проверить, что эти данные определены, что они имеются.

Для проверки существования переменной PHP предоставляет ряд встроенных функций.

Оператор isset

Функция isset() позволяет определить, инициализирована ли переменная или нет. Если переменная определена, то isset() возвращает значение true . Если переменная не определена, то isset() возвращает false . Также если переменная имеет значение null функция isset() также возвращает false .

Здесь переменная $message не инициализирована, поэтому выражение isset($message) будет возвращать значение false .

Теперь пусть переменная $message имеет начальное значение:

В этом случае выражение isset($message) будет возвращать true , поэтому будет выполняться инструкция echo $message :

Однако если переменной присвоено начальное значение null , то опять же будет считаться, что эта переменная не установлена:

empty

Функция empty() проверяет переменную на «пустоту». «Пустая» переменная — это переменная, значение которой равно null , 0, false или пустой строке — в этом случае функция empty() возвращает true :

Здесь переменная $message хранит пустую строку, поэтому выражение empty($message) возвратит true .

При этом если строка содержит даже хотя бы один пробел и больше ничего ( $message = » » ), то такая строка уже не считается пустой.

unset

С помощью функции unset() мы можем уничтожить переменную:

Но, как правило, необходимость в подобном удалении переменной возникает редко, так как PHP автоматически удаляет переменные, когда завершается выполнение контекста (например, функции), в котором определены эти переменные.

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().

$a = «test» ;
$b = «anothertest» ;

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() .

Результат выполнения данного примера в PHP 5.3:

Результат выполнения данного примера в PHP 5.4:

Примечания

isset() работает только с переменными, поэтому передача в качестве параметров любых других значений приведет к ошибке парсинга. Для проверки определения констант используйте функцию defined() .

Замечание: Поскольку это языковая конструкция, а не функция, она не может вызываться при помощи переменных функций.

Замечание:

При использовании isset() на недоступных свойствах объекта, будет вызываться перегруженный метод __isset(), если он существует.

Команда isset в PHP

Давайте напишем условие, выполняющее проверку на null :

Более удобно такую проверку можно выполнить с помощью специальной команды isset :

Подавление ворнинга

Пусть переменная $test вообще не определена. Как вы уже знаете, значение такой переменной будет равно null . При этом попытка обратиться к этой переменной приведет к появлению ворнинга:

Ворнинг также будет показан при попытке проверить переменную на null :

А вот проверка через команду isset не приведет к появлению ворнинга — он будет автоматически подавлен:

Инвертирование высказывания

Можно выполнить обратную проверку, на то, что переменная не определена. Для этого выполним инвертирование isset с помощью логического НЕ :

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *