Fonction unset() détruit une variable

PHP cours tutorial

La fonction unset()

(PHP 4, PHP 5)

La fonction unset() détruit une variable

Syntaxe :

unset ( $var [, $var [, $... ]] )

 

La fonction unset() détruit la ou les variables dont le nom a été passé en argument $var.

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 :

Sélectionner le code


  <?php
  function destroy_var()
  {
      global $var;
      unset($var);
  }
   
  $var = 'je suis une global';
  destroy_var();
  echo $var;
  ?>

 
 

 

Cet exemple va afficher

je suis une global

 

Pour détruire une variable globale à l'intérieur d'une fonction, vous pouvez utiliser le tableau $GLOBALS :

Exemple :

Sélectionner le code


  <?php
  function maFonction()
  {
      unset($GLOBALS['bar']);
  }
   
  $var = "une varirble global";
  maFonction();
  echo $var;
  ?>

 
 

 

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 même valeur qu'elle avait avant l'appel de unset().

Exemple :

Testez cet exemple sans unset() puis avec unset

Sélectionner le code


  <pre>
  <?php
  function maFonction(&$var)
  {
     unset($var);
      $var = "variable par reference";
  }
   
  $var = 'variable global';
  echo "$var\n";
   
  maFonction($var);
  echo "$var\n";
  ?>
  </pre>

 
 

 

Cet exemple va afficher

Sans unset()

variable global

variable par reference

Avec unset()

variable global

variable global

Si une variable statique est détruite à l'intérieur d'une fonction, unset() détruira la variable seulement dans le contexte du reste de la fonction. Les appels suivants restaureront la valeur précédente de la variable.

Exemple :

Sélectionner le code


<pre>
<?php
function maFonction()
{
    static $var;
    $var++;
    echo "Avant unset : $var, ";
    unset($var);
    $var = 57;
    echo "après unset : $var\n";
}
 
maFonction();
maFonction();
maFonction();
?>
</pre>

 
 

Ce qui affiche :

Avant unset : 1, après unset : 57

Avant unset : 2, après unset : 57

Avant unset : 3, après unset : 57

Exemple 1 : Exemple avec unset()

Sélectionner le code


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

 
 

 

Exemple 2 : Exemple avec un transtypage (unset)

Sélectionner le code


  <?php
  $name = 'un nom';
   
  var_dump((unset) $name);
  ?>

 
 

 

Note:

Lors de l'utilisation de cette fonction sur des propriétés d'objet inaccessibles, la méthode magique __isset sera appelée, si elle existe.