(PHP 4, PHP 5)
unset — Cancella una data variabile
unset() distrugge la variabile specificata. Occorre
notare che in PHP 3 la funzione unset() restituiva sempre TRUE
(in realtà era il valore 1). In PHP 4, invece, la funzione
unset() non è più una vera funzione, ora è una
istruzione. In questa veste non ritorna alcun valore, e cercare di ottenere
un valore dalla funzione unset() produce un errore
di parsing.
Example #1 Esempio di unset()
<?php
// Distrugge una singola variabile
unset($foo);
// distrugge un singolo elemento di un array
unset($bar['quux']);
// distrugge più di una variabile
unset($foo1, $foo2, $foo3);
?>
Il comportamento di unset() all'interno di una funzione può variare in funzione del tipo di variabile che si intende distruggere.
Se si applica unset() ad una variabile globale all'interno di una funzione, sarà distrutta solo la variabile locale. Nell'ambiente chiamante, la variabile manterrà il medesimo valore che aveva prima dell'uso di unset().
<?php
function destroy_foo()
{
global $foo;
unset($foo);
}
$foo = 'bar';
destroy_foo();
echo $foo;
?>
Il precedente esempio visualizzerà:
bar
Nel caso di una variabile PASSATA PER RIFERIMENTO ad una funzione, l'uso della funzione unset() distrugge solo la copia locale della variabile. Nell'ambiente chiamante, la variabile manterrà il medesimo valore che aveva prima dell'uso di unset().
<?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 si usa unset() su una variabile statica all'interno di una funzione, unset() cancella la variabile e tutti i suoi riferimenti.
<?php
function foo()
{
static $a;
$a++;
echo "$a\n";
unset($a);
}
foo();
foo();
foo();
?>
Il precedente esempio visualizzerà:
1 2 3
Se si desidera cancellare una variabile globale dall'interno di una funzione, occorre usare unset() sull'array $GLOBALS nel seguente modo:
<?php
function foo()
{
unset($GLOBALS['bar']);
}
$bar = "something";
foo();
?>
Nota: Poiché questo è un costrutto del linguaggio e non una funzione, non può essere chiamato con le variabili funzione