unset

(PHP 3, PHP 4, PHP 5 )

unset -- Cancella una data variabile

Descrizione

void unset ( mixed var [, mixed var [, mixed ...]])

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.

Esempio 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;
?>

L'esempio precedente 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();
?>

L'esempio precedente 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

Vedere anche isset() e empty().