PHP unset function

Like this blog? Consider exploring one of our sponsored banner ads...

unset

(PHP 3, PHP 4, PHP 5)

unset — Unset a given variableDescriptionvoid unset ( mixed var [, mixed var [, mixed ...]] )

unset() destroys the specified variables. Note
that in PHP 3, unset() will always return TRUE
(actually, the integer value 1). In PHP 4, however,
unset() is no longer a true function: it is
now a statement. As such no value is returned, and attempting to
take the value of unset() results in a parse
error.

Example 1. unset() example

// destroy a single variable
unset($foo);
 
// destroy a single element of an array
unset($bar['quux']);
 
// destroy more than one variable
unset($foo1, $foo2, $foo3);

Note:
It is possible to unset even object properties visible in current context.

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.

function destroy_foo() 
{
    global $foo;
    unset($foo);
}
 
$foo = 'bar';
destroy_foo();
echo $foo;


The above example will output:

bar


If you would like to unset() a global variable
inside of a function, you can use
the $GLOBALS array to do so:

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

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

function 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


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

See also isset(),
empty(), and
array_splice().


About this entry