(PHP 4, PHP 5)
unset — Cancella una data variabile
unset() distrugge la variabile specificata.
Il comportamento di unset() all'interno di una funzione può dipendere molto dal tipo di variabile che si intende distruggere.
Se una variabile globale è unset() all'interno di una funzione, solo la variabile locale viene distrutta. La variabile nell'ambiente chiamante conserverà lo stesso valore che aveva prima che unset() venisse chiamata.
<?php
function destroy_foo()
{
global $foo;
unset($foo);
}
$foo = 'bar';
destroy_foo();
echo $foo;
?>
Il precedente esempio visualizzerà:
bar
Per unset() una variabile globale all'interno di una funzione, viene usato l'array $GLOBALS:
<?php
function foo()
{
unset($GLOBALS['bar']);
}
$bar = "something";
foo();
?>
Se una variabile che è PASSATA PER RIFERIMENTO viene unset() all'interno di una funzione, solo la variabile locale viene distrutta. La variabile nell'ambiente chiamante conserverà lo stesso valore che aveva prima che unset() venisse chiamata.
<?php
function foo(&$bar)
{
unset($bar);
$bar = "blah";
}
$bar = 'something';
echo "$bar\n";
foo($bar);
echo "$bar\n";
?>
Il precedente esempio visualizzerà:
something something
Se una variabile statica viene unset() all'interno di una funzione, unset() distrugge la variabile solo nel contesto del resto della funzione. Le chiamate successive ripristineranno il precedente valore di una variabile.
<?php
function foo()
{
static $bar;
$bar++;
echo "Before unset: $bar, ";
unset($bar);
$bar = 23;
echo "after unset: $bar\n";
}
foo();
foo();
foo();
?>
Il precedente esempio visualizzerà:
Before unset: 1, after unset: 23 Before unset: 2, after unset: 23 Before unset: 3, after unset: 23
var
La variabile da distruggere.
...
Un'altra variabile ...
Nessun valore viene restituito.
Example #1 Esempio di unset()
<?php
// distrugge una singola variabile
unset($foo);
// distrugge un singolo elemento dell'array
unset($bar['quux']);
// distrugge più di una variabile
unset($foo1, $foo2, $foo3);
?>
Example #2 Uso del casting di (unset)
Il casting di (unset) è spesso confuso con la funzione unset(). Il casting di (unset) serve solo come un casting del tipo NULL, per completezza. Esso non altera la variabile a cui sta facendo il casting.
<?php
$name = 'Felipe';
var_dump((unset) $name);
var_dump($name);
?>
Il precedente esempio visualizzerà:
NULL string(6) "Felipe"
Nota: Poiché questo è un costrutto del linguaggio e non una funzione, non può essere chiamato con le variabili funzione
Nota:
È possibile distruggere anche proprietà degli oggetti visibili nel contesto corrente.
Nota:
Non è possibile distruggere $this all'interno di un metodo di un oggetto da PHP 5.
Nota:
Quando viene usato unset() su proprietà di oggetti inaccessibili, il metodo overloading __unset() verrà richiamato, se dichiarato.