Page 1 sur 1

avoir un nom de variable dynamique

Posté : 21 avr. 2006, 10:21
par nougitch
Bonjour,

Est-il possible de modifier le nom d'une variable.

Si je prends l'exemple d'une boucle par exemple.
Puis-je faire quelque chose du genre :
for ($i = 1; $i <= 5; $i++) {
   $nom_variable_$i = 'contenu_variable_1';
   }
Ce qui donnerait quelque chose comme :
$nom_variable_1 = 'contenu_variable_1';
$nom_variable_2 = 'contenu_variable_2';
$nom_variable_3 = 'contenu_variable_3';
$nom_variable_4 = 'contenu_variable_4';
$nom_variable_5 = 'contenu_variable_5';
Merci par avance.
Cdt

Posté : 21 avr. 2006, 10:44
par thierry59
utilise des tableaux:
$tab= array("contenu_variable_0","contenu_variable_1","contenu_variable_2");
ou
for ($x = 1; $x <= 5; $x++) { 
   $nom_variable[$x] = sin($x)*200;    / /example pour remplir un tableau 
   } 

Posté : 21 avr. 2006, 10:55
par nougitch
Merci Thierry59 (je suis Lillois mais dans la capitale ;-)

Le problème, c'est que je me trouve dans une boulce WHILE.
Comment insérer autant de valeurs dans mon tableau qu'il y a de données répondant à ma boucle ?

Cdt

Posté : 21 avr. 2006, 10:58
par Ryle
C'est je pense aussi la solution la plus pratique, mais sinon tu peux utiliser la commande eval() pour évaluer une chaine texte et considérer qu'il s'agit de php :
eval ( "\$var = 123;" ); // l'antislash devant le $ permet de dire qu'il s'agit bien du caractère et non d'une variable
echo $var; // affiche "123"

$i=3;
eval ( "\$nom_variable_".$i." = 'contenu_variable_1';" );
// affectera "contenu_variable_1" dans la variable $nom_variable_3
echo $nom_variable_3;
Edit : Pour répondre à ta question, regarde son 2ème exemple, et utilise ton while() à la place de son for() :)

Posté : 21 avr. 2006, 11:01
par jpaul
As-tu lu la partie de la doc traitant des variables dynamiques :
http://fr2.php.net/manual/fr/language.v ... riable.php

C'est le titre de ton poste et sauf erreur de ma part, ça devrait répondre à ton besoin non ?

Posté : 21 avr. 2006, 11:05
par nougitch
Je vous remercie les gars, c'est sympa d'être si réactifs.

Je teste vos solutions et reviens dans quelques minutes.

Posté : 21 avr. 2006, 11:46
par thierry59
interessant tous ca...

mais a quoi sert les variables dynamiques? tu a un example d'itilisation?

Posté : 21 avr. 2006, 11:49
par nougitch
Bon, j'ai opté pour eval() qui fonctionne très bien.
Merci pour la doc jpaul, très intéressant.
@+

Posté : 21 avr. 2006, 11:53
par nougitch
Je génère des fonctions JavaScript en fonction des données contenues dans ma base.
C'est un peu long à expliquer mais en gros je mets en place un système de calcul automatique sur 5 niveaux, en sachant que :
- niveau 1 = SUM(niveaux 2);
- niveau 2 = SUM(niveaux 3);
- niveau 3 = SUM(niveaux 4);
- niveau 4 = SUM(niveaux 5);
Le niveau 5 étant le seul champ à saisir (les autres sont disabled').

En gros, c'est pour créer des reports de suivis de budgets rapidement.

Voilà ;-)

Posté : 21 avr. 2006, 11:54
par ouckileou
J'en remet une couche mais si c'était juste pour faire des variables de ce type : $var_1, $var_2, $var_3
un tableau était bien plus indiqué que eval() et les variables dynamiques...

Plus simple, plus facile à manipuler et plus clair à relire ensuite...

Posté : 21 avr. 2006, 12:05
par nougitch
Merci ouckileou.