fonction eval() : qui peut m'expliquer ce résultat? [Php] - Programmation
Marsh Posté le 22-02-2002 à 12:05:48
qd tu fais ça:
$str .= "$J".$k."AMP".$l.",";
les $J sont évalués
en effet quand tu mets une variable dans une string délimitées par des doubles quotes ", cette variable est évaluée puis "insérée" dans la string.
Pour éviter cela, utilise des simples quotes ' à la place de "
A+
Marsh Posté le 22-02-2002 à 12:06:22
Et y vaut quoi $J dans ton truc ? ? ?
Marsh Posté le 22-02-2002 à 12:13:02
je pense qu'il veut créer dynamiquement des noms de variable, ie récupérer $J1AMP1... et comme $J n'est pas définit, il récupére 1AMP, non?
si tel est le cas, je lui conseillerai un un ptit tour sur be.php.net section manuel, nom dynamique de variable...
Marsh Posté le 22-02-2002 à 12:28:31
dropsy a écrit a écrit : je pense qu'il veut créer dynamiquement des noms de variable, ie récupérer $J1AMP1... et comme $J n'est pas définit, il récupére 1AMP, non? si tel est le cas, je lui conseillerai un un ptit tour sur be.php.net section manuel, nom dynamique de variable... |
Vi c exactement ça!
Je vais voir sur le site en question...
Marsh Posté le 22-02-2002 à 12:36:39
Je pensais qu'il connaissais le truc le l'interprétation des variables dans les chaînes "..." puisqu'il pense à faire çà :
$str = "TraitementCra(\$Month,\$Year,\$nom,\$prenom,";
? ? ?
Marsh Posté le 22-02-2002 à 12:38:57
$tmp = $j."AMP1";
si $j vaut "TE", $tmp vaut donc "TEAMP1"
ensuite pour recuperer la valeur de la variable $TEAMP1 il te suffit d'utiliser $$tmp (avec deux $)
Marsh Posté le 22-02-2002 à 12:51:33
Donc, j'ai réussit à écrire mes deux strings.
echo $str; vaut "function toto($A,$B...) { blabla };"
echo $str1; vaut "toto(arthur,jean,...);"
Bref, j'ai donc bien un string qu définit ma fonction et l'autre qui la lance.
Mais ensuite comment faire en sorte que le php l'interprète?
avec eval(), sans doute mais...
J'ai essayé :
$fonction = "return(".$str." );";
mais ça me sort une erreur :
Parse error: parse error in c:\program files\easyphp\www\html\Tmis\Formulaires\cracra.php(65) : eval()'d code on line 1
Marsh Posté le 22-02-2002 à 14:04:08
Il cherche bien la fonction traitementcra().
Donc mon deuxième string fonctionne très bien.
Mais apparemment, le premier n'est pas reconnu.
Marsh Posté le 22-02-2002 à 15:01:52
http://be.php.net/manual/fr/function.eval.php
la première remarque des utilisateurs correspond à ton cas, non?
sinon, si tu pouvais donner exactement la ligne où il y a le eval avec la valeur des différents paramètres, parce que je me perd un
Marsh Posté le 22-02-2002 à 16:21:41
Vi, je connais cette page par coeur...
J'ai tout essayé mais rien ne fonctionne...
Marsh Posté le 22-02-2002 à 10:50:27
Voilà, j'essaie d'utiliser eval() dans mon code.
Je créée un string avec une boucle "for"
-----------------------------
$str = "TraitementCra(\$Month,\$Year,\$nom,\$prenom,";
for($l=1;$l<15;$l++) {
for($k=1;$k<32;$k++) {
$str .= "$J".$k."AMP".$l.",";
$str .= "$J".$k."PMP".$l.",";
}
}
$str .= "\$Day)";
-----------------------------
Puis avec eval()
eval( "\$str = \"$str\";" );
-----------------------------
Quand je fais un echo, j'obtiens :
TraitementCra(02,2002,zer,zer,1AMP1,1PMP1,2AMP1,2PMP1,3AMP1,3PMP1,4AMP1...
Bref, touts les '$J' ont disparu...
Pourquoi
[jfdsdjhfuetppo]--Message édité par Thocan--[/jfdsdjhfuetppo]