unset

(PHP 4, PHP 5, PHP 7, PHP 8)

unsetRemove a definição de uma variável informada

Descrição

unset(mixed $var, mixed ...$vars): void

unset() destrói as variáveis especificadas.

O comportamento de unset() dentro de uma função pode variar dependendo de qual tipo de variável está tentando-se destruir.

Se uma variável global tornar-se indefinida por unset() dentro de uma função, apenas a variável local é destruída. A variável no ambiente que chamou a função manterá o mesmo valor anterior à chamada a unset().

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

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

O exemplo acima produzirá:

bar

Para remover a definição de uma variável global usando unset() dentro de uma função, use o array $GLOBALS:

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

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

Se uma variável que é PASSADA POR REFERÊNCIA tiver sua definição removida por unset() dentro de uma função, apenas a variável local é destruída. A variável no ambiente que chamou a função manterá o mesmo valor anterior à chamada a unset().

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

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

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

O exemplo acima produzirá:

something
something

Se uma variável estática tiver a definição removida por unset() dentro de uma função, unset() destrói a variável apenas no contexto do resto da função. Chamadas subsequentes à função irão restaurar o valor anterior da variável.

<?php
function foo()
{
    static $bar;
    $bar++;
    echo "Antes de unset: $bar, ";
    unset($bar);
    $bar = 23;
    echo "depois de unset: $bar\n";
}

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

O exemplo acima produzirá:

Antes de unset: 1, depois de unset: 23
Antes de unset: 2, depois de unset: 23
Antes de unset: 3, depois de unset: 23

Parâmetros

var

A variável que terá sua definição removida.

vars

Mais variáveis que terão definições removidas.

Valor Retornado

Nenhum valor é retornado.

Exemplos

Example #1 Exemplo de unset()

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

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

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

Example #2 Usando a conversão (unset)

A conversão (unset) é frequentemente confundida com a função unset() function. A conversão (unset) serve apenas como uma conversão para tipo NULL, para completude. Ela não altera a variável que ela está convertendo. A conversão (unset) tornou-se defasada a partir do PHP 7.2.0, e foi removida a partir do PHP 8.0.0.

<?php
$name = 'Felipe';

var_dump((unset) $name);
var_dump($name);
?>

O exemplo acima produzirá:

NULL
string(6) "Felipe"

Notas

Note: Como esta é uma construção da linguagem e não uma função, ela não pode ser chamada usando funções variáveis ou argumentos nomeados.

Note:

É possível remover definições de propriedades de objeto visíveis no contexto atual.

Se declarados, o método __get() é chamado ao acessar uma propriedade indefinida, e o método __set() é chamado ao definir uma propriedade indefinida.

Note:

Não é possível remover a definição de $this dentro de um método do objeto.

Note:

Ao usar unset() em propriedades de objeto inacessíveis, o método de sobrecarga __unset() será chamado, caso esteja declarado.

Veja Também