unset

(PHP 3, PHP 4, PHP 5 )

unset -- Destrói a variável especificada

Descrição

void unset ( mixed var [, mixed var [, ...]] )

unset() destrói a variável especificada. Lembrando que no PHP 3, unset() sempre retornará TRUE (atualmente, o valor inteiro 1). No PHP 4, porém, unset() não é uma função verdadeira: agora é um construtor da linguagem. Como tal, nenhum valor é retornado, se tentar pegar o valor de unset() um erro de sintaxe (parse error) irá acontecer.

Exemplo 1. Exemplo de unset()

<?php
// destrói uma única variável
unset ($foo);

// destrói um único elemento de uma matriz
unset ($bar['quux']);

// destrói mais de uma variável
unset ($foo1, $foo2, $foo3);
?>

O comportamento de unset() pode variar dentro de uma função dependendo do tipo de variável que você está tentando destruir.

Se utilizar unset() em uma variável global dentro de uma função, somente a variável local será destruída. A variável no ambiente que foi chamada terá o mesmo valor como antes da execução de unset().

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

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

O exemplo acima deve mostrar:

bar

Se a variável for passada por referencia e a função unset() estiver dentro de uma função, apenas a variável local será destruída. A variável no ambiente que chamou a função onde esta unset() irá manter o mesmo valor de antes da utilização de unset().

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

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

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

O exemplo acima deve mostrar:

something
something

Se for utilizado unset() com uma variável estática dentro de uma função, unset() destrói a variável e todas as suas referencias.

<?php
function foo() {
    static
$a;
    
$a++;
    echo
"$a\n";
    unset(
$a);
}

foo();
foo();
foo();
?>

O exemplo acima deve mostrar:

1
2
3

Se você quiser usar a função unset() com uma variável global dentro de uma função, você poderá usar a matriz $GLOBALS para faze-lo:

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

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

Nota: Este é um construtor de linguagem e não uma função, por isso não é possível chamá-lo através de funções variáveis

Veja mais em isset(), empty() e array_splice().