void unset ( mixed $var [, mixed $... ] )
unset() destroys the specified variables. 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.
<?phpfunction foo(){ static $bar; $bar++; echo "Before unset: $bar, "; unset($bar); $bar = 23; echo "after unset: $bar\n";}foo();foo();foo();?
>
The above example will output:
Before unset: 1, after unset: 23 Before unset: 2, after unset: 23 Before unset: 3, after unset: 23
No value is returned.