is_string
print_r
Variable handling Functions
PHP Manual

# isset

Determine if a variable is set and is not `NULL`

### Description

bool isset ( mixed `$var` [, mixed `$...` ] )

Determine if a variable is set and is not `NULL`.

If a variable has been unset with unset, it will no longer be set. isset will return `FALSE` if testing a variable that has been set to `NULL`. Also note that a `NULL` byte ("\0") is not equivalent to the PHP `NULL` constant.

If multiple parameters are supplied then isset will return `TRUE` only if all of the parameters are set. Evaluation goes from left to right and stops as soon as an unset variable is encountered.

### Parameters

`var`

  The variable to be checked.

`...`

  Another variable ...

### Return Values

Returns `TRUE` if `var` exists and has value other than `NULL`, `FALSE` otherwise.

### Changelog

Version | Description
--- | ---
5.4.0 | Checking non-numeric offsets of strings now returns `FALSE`.

### Examples

Example #1 isset Examples

`<?php
$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
?>`

This also work for elements in arrays:

`<?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
// 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
?>`

Example #2 isset on String Offsets

PHP 5.4 changes how isset behaves when passed string offsets.

`<?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']));
?>`

Output of the above example in PHP 5.3:

    bool(true)
    bool(true)
    bool(true)
    bool(true)
    bool(true)
    bool(true)

Output of the above example in PHP 5.4:

    bool(false)
    bool(true)
    bool(true)
    bool(true)
    bool(false)
    bool(false)

### Notes

Warning

isset only works with variables as passing anything else will result in a parse error. For checking if constants are set use the defined function.

> Note: Because this is a language construct and not a function, it cannot be called using variable functions.

> Note:

> When using isset on inaccessible object properties, the __isset() overloading method will be called, if declared.

### See Also

- empty
- __isset()
- unset
- defined
- the type comparison tables
- array_key_exists
- is_null
- the error control @ operator