unset

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 :





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 :





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( ) .