@ccueil Colles

Noms dynamiques de variables

Concaténer des noms de variables et manipuler des listes de variables



Il est parfois pratique d'utiliser des noms de variables qui sont eux-même des variables.
Par exemple, en créant une page, on définit et utilise les variables $var1, $var2, $var3, $var10.

Après avoir fait ceci, on voudrait pouvoir manipuler automatiquement toutes ces variables. Après coup, on peut se dire que la bonne démarche est de reprendre la programmation de la page et créer au lieu des 10 variables $var1, …, $var10 une seule variable $var qui est un tableau contenant 10 entrées.
Si on ne veut pas retoucher à toutes la page, on peut néanmoins faire appel aux noms dynamiques de variables, qui permettent de considérer le nom lui-même de la variable comme une variable.

En php, les noms de variables sont préfixées par un "$", les variables dynamiques par 2: "$$".

Dans le contexte précédent, par exemple pour simplifier avec 3 variables $var1, $var2 et $var3
<?php 
$var1="Ma 1ère variable";
$var2="Ma 2ème variable";
$var3="Ma 3ème variable";
?>
on peut alors accéder à ces variables en créant dynamiquement une variable $vardyn dont le nom lui-même change et qui va être tout à tout chacune de ces 3 variables:
<?php 
$var1="Ma 1ère variable";
$var2="Ma 2ème variable";
$var3="Ma 3ème variable";

for ($i=1;$i<=3;$i++) {
  $vardyn="var".$i;
  echo "Var".$i." = ".$$vardyn."<br>";}
?>
ce qui affiche:
Var1 = Ma 1ère variable
Var2 = Ma 2ème variable
Var3 = Ma 3ème variable
On peut bien sûr aussi alors modifier les variables ou tout autre chose:
<?php 
$var1="Ma 1ère variable";
$var2="Ma 2ème variable";
$var3="Ma 3ème variable";

for ($i=1;$i<=3;$i++) {
  $vardyn="var".$i;$$vardyn="Maintenant variable ".$i*10;
}
echo "var1 = ".$var1."<br>";
echo "var2 = ".$var2."<br>";
echo "var3 = ".$var3."<br>";
?>
qui retourne et affiche:
var1 = Maintenant variable 10
var2 = Maintenant variable 20
var3 = Maintenant variable 30