array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'pt_BR', ), 'this' => array ( 0 => 'function.unset.php', 1 => 'unset', ), 'up' => array ( 0 => 'ref.var.php', 1 => 'Funções para Manipulação de variáveis', ), 'prev' => array ( 0 => 'function.unserialize.php', 1 => 'unserialize', ), 'next' => array ( 0 => 'function.var-dump.php', 1 => 'var_dump', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'pt_BR', 'path' => 'reference/var/functions/unset.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4, PHP 5, PHP 7, PHP 8)
unset — Remove a definição de uma variável informada
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
var
A variável que terá sua definição removida.
vars
Mais variáveis que terão definições removidas.
Nenhum valor é retornado.
Exemplo #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);
?>
Exemplo #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"
Nota: 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.
Nota:
É 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.
Nota:
Não é possível remover a definição de
$this
dentro de um método do objeto.
Nota:
Ao usar unset() em propriedades de objeto inacessíveis, o método de sobrecarga __unset() será chamado, caso esteja declarado.