isset

Determine if a variable is set and is not &null;

&reftitle.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.

&reftitle.parameters;

`var`

- The variable to be checked.

`...`

- Another variable ...

&reftitle.returnvalues;

Returns &true; if `var` exists and has value other than &null;, &false; otherwise.

&reftitle.changelog;

&Version; | &Description;
5.4.0 | Checking non-numeric offsets of strings now returns &false;.

&reftitle.examples;

### `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

    ?>

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

&example.outputs.53;

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

&example.outputs.54;

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

&reftitle.notes;

`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.

¬e.language-construct;

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

&reftitle.seealso;

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