unset

Description

The behavior of unset inside of a function
can vary depending on what type of variable you are attempting to
destroy.

If a globalized variable is unset inside of
a function, only the local variable is destroyed. The variable
in the calling environment will retain the same value as before
unset was called.

<?phpfunction destroy_foo() { global $foo; unset($foo);}

$foo = 'bar';destroy_foo();echo $foo;?>

The above example will output:

bar

To unset a global variable
inside of a function, then use
the $GLOBALS array to do so:

<?phpfunction foo() { unset($GLOBALS['bar']);}

$bar = "something";foo();?>

If a variable that is PASSED BY REFERENCE is
unset inside of a function, only the local
variable is destroyed. The variable in the calling environment
will retain the same value as before unset
was called.

<?phpfunction foo(&$bar) { unset($bar);$bar = "blah";}

$bar = 'something';echo "$bar\n";

foo($bar);echo "$bar\n";?>

The above example will output:

something
something

If a static variable is unset inside of a
function, unset destroys the variable only in the
context of the rest of a function. Following calls will restore the
previous value of a variable.