Déclarer une variable globale à partir d'une chaine de caractère ?

Déclarer une variable globale à partir d'une chaine de caractère ? - PHP - Programmation

Marsh Posté le 14-08-2003 à 10:19:03    

salut, voilà ce que je cherche à faire.  
 
- Un script PHP possède une variable $toto. Mais selon ce qui est passé en paramètre, je ne sais pas comment elle s'appelle (en effet, il peut s'agir de $toto, $tata, $tutu ...) car il s'agit d'un champ d'un formulaire HTML. Je récupère son nom via une chaine de caractère (disons $c = "toto" ).
 
- Ce script appelle une fonction traiter() dans lequel je dois récupérer la variable $toto. Traiter() connait le nom de la variable car je lui passe en paramètre $c = "toto".
 
- Maintenant, comment récupérer la valeur de $toto dans cette fonction traiter() ? Je pourrais le faire en déclarant une variable global, mais "global $$c" ne marche pas ... une solution svp !!??
 
edit : solution, passer par eval()


Message édité par Lex le 14-08-2003 à 10:42:41
Reply

Marsh Posté le 14-08-2003 à 10:19:03   

Reply

Marsh Posté le 14-08-2003 à 10:23:07    

:heink:  
est-ce bien nécessaire d'utiliser une vraibale globale ?
 

Code :
  1. traiter($c) {
  2.    // traitement sur $new_c=$c;
  3.    return $new_c;
  4. }


 
 
non ? [:spamafote]  


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 14-08-2003 à 10:25:23    

non. :D  
 
car je ne cherche pas à modifier $c, mais $toto (cad la variable correspondant à la chaine de caractère $toto) !

Reply

Marsh Posté le 14-08-2003 à 10:27:45    

simogeo a écrit :

:heink:  
est-ce bien nécessaire d'utiliser une vraibale globale ?
 

Code :
  1. traiter($c) {
  2.    // traitement sur $new_c=$c;
  3.    return $new_c;
  4. }


 
 
non ? [:spamafote]  
 


 
Nan mais ce qu'il veut c'est bosser avec $$c... et apparemment c'est pas accessible bien que $toto, $titi, etc. soient globales. J'ai compris le pb ou pas?


---------------
NOUVEAU! Le guide de l'édition en version ebook : http://marcautret.free.fr/autret/150q-ebook/
Reply

Marsh Posté le 14-08-2003 à 10:29:13    

Lex a écrit :

non. :D  
 
car je ne cherche pas à modifier $c, mais $toto (cad la variable correspondant à la chaine de caractère $toto) !


 
Et si tu passes par un eval() dans traiter(...) ?


---------------
NOUVEAU! Le guide de l'édition en version ebook : http://marcautret.free.fr/autret/150q-ebook/
Reply

Marsh Posté le 14-08-2003 à 10:31:35    

Code :
  1. traiter($nom_var_glob)
  2. {
  3. $exec = "global $nom_var_glob;";
  4. eval($exec);
  5. .../...
  6. }


 
Un truc dans ce style?


---------------
NOUVEAU! Le guide de l'édition en version ebook : http://marcautret.free.fr/autret/150q-ebook/
Reply

Marsh Posté le 14-08-2003 à 10:32:32    

Lex a écrit :

non. :D  
 
car je ne cherche pas à modifier $c, mais $toto (cad la variable correspondant à la chaine de caractère $toto) !


autant pour moi  [:volta]


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 14-08-2003 à 10:33:26    

Code :
  1. ${$c}=traiter(${$c});
  2. function traiter($mavar) {
  3.        return $mavar;
  4.   }


Message édité par belgique le 14-08-2003 à 10:33:59
Reply

Marsh Posté le 14-08-2003 à 10:33:38    

Je vais essayer avec eval, merci ... je reviens si ça marche pas :D

Reply

Marsh Posté le 14-08-2003 à 10:36:56    

Merci les gars  :jap: (ou les filles peut-être ??  :whistle: )
 
ça marche avec eval, même si j'aurais préféré que ça marche avec une variable super globale genre avec $_GET(...). Le code est un peu impossible à lire maintenant mais c bon :D

Reply

Marsh Posté le 14-08-2003 à 10:36:56   

Reply

Marsh Posté le 14-08-2003 à 10:44:50    

C'est pas parce que ça MARCHE que c'est la réponse optimale, loin s'en faut!
 
J'ai dégainé eval() parce que je voyais pas autre chose a priori, mais l'utiliser révèle, souvent, une mauvaise conception. M'enfin si ça te permet de faire tourner le code... quitte à le toiletter ensuite.


---------------
NOUVEAU! Le guide de l'édition en version ebook : http://marcautret.free.fr/autret/150q-ebook/
Reply

Marsh Posté le 14-08-2003 à 10:57:49    

ACut a écrit :

C'est pas parce que ça MARCHE que c'est la réponse optimale, loin s'en faut!
 
J'ai dégainé eval() parce que je voyais pas autre chose a priori, mais l'utiliser révèle, souvent, une mauvaise conception. M'enfin si ça te permet de faire tourner le code... quitte à le toiletter ensuite.


 
exact, comme je l'ai dit précédemment le code est caca et je cherche toujours uen solution avec une variable "super" globale ...

Reply

Marsh Posté le 14-08-2003 à 14:00:45    

Code :
  1. $_GET["$c"]

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed