Конструкция PHP isset() проверяет «установлена» ли переменная. Возвращает TRUE, если переменная установлена и FALSE, если нет (NULL).
Обратите внимание, что это именно конструкция языка PHP, а не функция, поэтому она не может быть использована в качестве параметра какой-либо функции.
Также нужно отметить, что функция работает с переменными, но не предназначена для проверки констант. Чтобы определить, задана ли константа, используйте defined().
Общий синтаксис:
bool isset (mixed $var [, mixed $... ] )
В скобках указывается имя переменной, которую необходимо проверить. Если нужно проверить несколько переменных, то их можно перечислить через запятую. При этом конструкция вернет TRUE только в том случае, если установлены все перечисленные переменные.
Пример 1.
<?php
$my_var = "тест";
if(isset($my_var)){
echo "Переменная установлена";
}else{
echo "Переменная не установлена";
}
?>
В этом примере будет выведено «Переменная установлена».
<?php
$var = "тест";
unset($var);
if(isset($var)){
echo "Переменная установлена";
}else{
echo "Переменная не установлена";
}
?>
Пример 2. Зададим значение для переменной и удалим ее.
<?php
$var = "тест";
unset($var);
if(isset($var)){
echo "Переменная установлена";
}else{
echo "Переменная не установлена";
}
?>
Получим «Переменная не установлена».
Пример 3. Проверка нескольких переменных:
<?php
$var1 = "тест";
$var2 = "тест 2";
$var3 = "тест 3";
unset($var3);
if(isset($var1, $var2, $var3)){
echo "Все переменные установлены";
}else{
echo "Не все переменные установлены";
}
?>
Будет выведено «Не все переменные установлены».
Пример 4. Проверка элементов массива:
<?php
$my_array = array ('product' => 'milk', 'price' => NULL, 'num' => 1);
var_dump(isset($my_array['product']));// TRUE
var_dump(isset($my_array['price'])); // FALSE
var_dump(isset($my_array['num'])); // TRUE
?>
Как видно из данного примера, несмотря на то, что в массиве существует элемент с ключом «price», проверка возвращает FALSE, поскольку значение данного элемента NULL. В таких случаях, чтобы проверить, что элемент с указанным индексом существует, целесообразнее использовать функцию array_key_exists():
<?php
$my_array = array ('product' => 'milk', 'price' => NULL, 'num' => 1);
var_dump(array_key_exists('price', $my_array)); // TRUE
?>