unset
(PHP 4, PHP 5, PHP 7, PHP 8)
unset — Remove a definição de uma variável informada
Descrição
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
- isset() - Determina se uma variável está declarada e é diferente de null
- empty() - Determina se uma variável está vazia
- __unset()
- array_splice() - Remove uma parte array e a substitui por outra coisa
- Conversão (unset)