Manuel PHP
Précédent |  | Suivant

# unset

(unknown)

unset -- Détruit une variable

## Description

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

unset() détruit les variables `var`. Notez qu'en PHP 3, unset() retournait toujours `TRUE` (en fait, la valeur entière 1). unset() n'est plus une véritable fonction : c'est une structure du langage, ce qui fait qu'elle ne retourne pas de valeur. Lire la valeur retournée par unset() (dans une variable, par exemple), retourne une erreur d'analyse.

Exemple 1. Exemple avec unset()
    <?php
    // Destruction d'une seule variable
    unset ($foo);
    // Destruction d'un élément de tableau
    unset ($bar['quux']);
    // Destruction de plusieurs variables
    unset ($foo1, $foo2, $foo3);
    ?>

Le comportement de unset() à l'intérieur d'une fonction peut varier suivant le type de variable que vous voulez détruire.

Si une variable globale est détruite avec unset() depuis une fonction, seule la variable locale sera détruite. Le variable globale gardera la valeur acquise avant l'appel à unset().

    <?php
    function destroy_foo() {
        global $foo;
        unset($foo);
    }
    $foo = 'bar';
    destroy_foo();
    echo $foo;
    ?>

L'exemple ci dessus affichera :

bar

Si une variable qui est passée par référence est détruite à l'intérieur d'une fonction, seule la variable locale sera détruite. La variable globale conservera la dernière valeur qu'elle avait avant l'appel de unset().

    <?php
    function foo(&$bar) {
        unset($bar);
        $bar = "bla";
    }
    $bar = 'truc';
    echo "$bar\n";
    foo($bar);
    echo "$bar\n";
    ?>

L'exemple ci dessus va afficher :

`truc truc`

Si une variable statique est détruite à l'intérieure d'une fonction unset() détruira la référence à la variable statique, plutôt que la variable statique elle même.

    <?php
    function foo() {
        static $a;
        $a++;
           echo "$a\n";
        unset($a);
    }
    foo();
    foo();
    foo();
    ?>

L'affichage du script ci-dessus donnera :

`1 2 3`

Si vous voulez détruire une variable globale, depuis une fonction, vous pouvez utiliser le tableau `$GLOBALS` :

    <?php
    function foo() {
        unset($GLOBALS['bar']);
    }
    $bar = "truc";
    foo();
    ?>

> Note : unset() est une structure du langage et non pas une fonction.

Voir aussi isset() et empty().

Précédent | Sommaire | Suivant
unserialize | Niveau supérieur | var_dump