Les variables dynamiques
  
  
   Il est pratique d'avoir parfois des noms de variables qui sont variables.
   C'est-à-dire un nom de variable qui est affecté et utilisé
   dynamiquement. Une variable classique est affectée avec
   l'instruction suivante :
  
  
  
  
  
   Une variable dynamique prend la valeur d'une variable et l'utilise
   comme nom d'une autre variable. Dans l'exemple ci-dessous,
   bonjour peut être utilisé comme le nom d'une
   variable en utilisant le "$$" précédent la variable.
   C'est-à-dire :
  
  
  
  
  
   À ce niveau, deux variables ont été définies et
   stockées dans l'arbre des symboles PHP : $a avec comme valeur
   "bonjour" et $bonjour avec comme valeur "monde". Alors, l'instruction :
  
  
  
  
  
   produira le même affichage que :
  
  
  
  
  
   c'est-à-dire : bonjour monde.
  
  
  
   Afin d'utiliser des variables variables avec des tableaux,
   un problème d'ambiguïté doit être résolu. En effet, si l'analyseur rencontre
   $$a[1], il doit déterminer si
   $a[1] devait être utilisé comme une variable, ou si
   $$a était attendu comme la variable, suivi de l'indice [1]
   de cette variable. La syntaxe pour résoudre
   cette ambiguïté est la suivante : ${$a[1]} pour le premier
   cas et ${$a}[1] pour le deuxième.
  
  
  
   On peut également accéder aux propriétés d'une classe
   en utilisant les noms des variables. Le nom de la variable
   sera résolu en utilisant la portée depuis laquelle l'appel
   s'effectue. Par exemple, s'il y a une expression de la forme
   $foo->$bar, alors la portée locale sera
   examinée pour $bar et sa valeur sera utilisée
   comme nom pour la propriété de $foo.
   Ce comportement reste valide si $bar
   est un tableau.
  
  
   Les accolades peuvent aussi être utilisées pour clairement délimiter
   le nom de la propriété. Ceci est utile lors de l'accès à des valeurs
   d'une propriété qui contient un tableau, lorsque le nom de la propriété
   est composé de plusieurs parties, ou lorsque le nom de la propriété
   contient des caractères non valides (i.e. depuis la fonction
   json_decode() ou SimpleXML).
  
  
  
   
    Exemple #1 Exemple de propriété variable
    
<?php
class Foo {
    public $bar = 'I am bar.';
    public $arr = ['I am A.', 'I am B.', 'I am C.'];
    public $r   = 'I am r.';
}
$foo = new Foo();
$bar = 'bar';
$baz = ['foo', 'bar', 'baz', 'quux'];
echo $foo->$bar . "\n";
echo $foo->{$baz[1]} . "\n";
$start = 'b';
$end   = 'ar';
echo $foo->{$start . $end} . "\n";
$arr = 'arr';
echo $foo->{$arr[1]} . "\n";
echo $foo->{$arr}[1] . "\n";
?>
     
    L'exemple ci-dessus va afficher :
 
    
    
     I am bar.
     I am bar.
     I am bar.
     I am r.
     I am B.
     
     
    
  
  
  Avertissement
   
    Notez que les variables dynamiques ne peuvent pas être utilisées
    avec les
    tableaux Superglobaux dans
    une fonction ou une classe. La variable $this est aussi
    une variable spéciale qui ne peut être référencée dynamiquement.