7.105.36 unset()Détruit une variable[ Exemples avec unset ] CVS uniquement
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 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
.
Exemple avec unset dans un contexte de fonction |
<?php function destroy_foo() { global $foo; unset($foo); } $foo = 'bar'; destroy_foo(); echo $foo; ?>
|
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
.
Exemple avec unset sur une référence |
<?php function foo(&$bar) { unset($bar); $bar = "bla"; } $bar = 'truc'; echo "$bar\n"; foo($bar); echo "$bar\n"; ?>
|
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.
Exemple avec unset avec une variable statique |
<?php function foo() { static $a; $a++; echo "$a\n"; unset($a); } foo(); foo(); foo(); ?>
|
Si vous voulez détruire une variable globale, depuis une
fonction, vous pouvez utiliser le tableau
$globals
:
Exemple avec unset avec une variable globale |
<?php
function foo() { unset($GLOBALS['bar']); } $bar = "truc"; foo(); ?>
|
Note |
unset
est une structure du langage et non pas une
fonction.
|
Note |
Comme ceci est une structure du langage, et non pas une fonction, il n'est pas possible de l'appeler avec les variables fonctions .
|
Voir aussi
array_splice
,
isset
et
empty
.
|