Page 1 sur 1

[R] Création de variable dynamique

Posté : mar. 09 juin 2009 09:15
par lord1366
Bonjour,

Je souhaiterai créer des variables variables ou des noms de variables dynamiques

Car j'ai un fichier XML et je voudrais créer une variable par Node, par balise.

Exemple en PHP :

Création de la variable de variable :

Code : Tout sélectionner

$$ma_variable
 
Initialisation :
 
$$ma_variable = "Test";

echo ${$ma_variable}";  // affiche test

Merci pour votre aide

Re: Création de variables variables ou nom de variable dynamique

Posté : mar. 09 juin 2009 15:23
par lord1366
Up !

Petit Exemple :

J'interroge un fichier XML :

Code : Tout sélectionner

$ATTENTE_MAX_POPUP_SAUV = $xml.selectSingleNode("/EXTRACT/ATTENTE_MAX_POPUP_SAUV")
$ATTENTE_MAX_POPUP_SAUV = $ATTENTE_MAX_POPUP_SAUV.firstChild.nodeValue  
        
$ATTENTE_MAX_SAUV_FICHIER = $xml.selectSingleNode("/EXTRACT/ATTENTE_MAX_SAUV_FICHIER")
$ATTENTE_MAX_SAUV_FICHIER = $ATTENTE_MAX_SAUV_FICHIER.firstChild.nodeValue

Si j'ai 40 champs dans mon fichier XML je vais devoir faire la manip ci-dessus 40 fois, ce n'est pas propre, hors avec des variables variables, ça prendrai 3 lignes

Je m'en sert souvent en php pour de la génération de formulaires, de menu déroulants....

merci

Re: Création de variables variables ou nom de variable dynamique

Posté : mar. 09 juin 2009 16:23
par TaPuZ
Salut.
J'essaye juste de comprendre (désolé).
En fait, il s'agirait d'avoir une variable, dont une partie du nom est affectée par une variable, c'est ça?
Comme lorsqu'on a un $array[$a], où par exemple, on fait varier $a de 1 à $array[0] (cas classique des tableaux à contenu non fini)?

Re: Création de variables variables ou nom de variable dynamique

Posté : mar. 09 juin 2009 17:31
par lord1366
Bonjour,

Oui, c'est bien ça.

Je réexplique car c'est pas trop clair mon explication :

Code : Tout sélectionner

$nomvariable = "variable_variable"

For $y = 1 to 15 Step +1

      ${$nomvariable} & $y = " "

next
ça devrai me créer 15 variables nommées de $variable_variable1 à $variable_variable15

Merci pour votre aide ça allegerait pas mal de mes codes autoit

Re: Création de variables variables ou nom de variable dynamique

Posté : mar. 09 juin 2009 18:41
par orax
Peut-être comme ça, si j'ai bien compris :

Code : Tout sélectionner

For $y = 1 To 15
    Assign("nomvariable" & $y, $y)
Next

MsgBox(0, "", Eval("nomvariable5"))

Re: Création de variables variables ou nom de variable dynamique

Posté : mar. 09 juin 2009 19:40
par sylvanie
Bonsoir,
Orax a raison pour cette piste, c'est effectivement le mot clé pour créer des noms de variables dynamiquement.
Pour les appeler par la suite, soit on peut écrire, comme l'a fait Orax, le nom "en dur", ou construire l'appel grâce à Eval
cf :
http://www.autoitscript.fr/forum/viewto ... sign#p7324

Re: Création de variables variables ou nom de variable dynamique

Posté : mar. 09 juin 2009 21:43
par Tlem
@lord1366

Merci de prendre le temps de lire les règles de présentation d'un message.

Veuillez mettre la balise de titre, et les balises de code dans votre premier message.

Re: Création de variables variables ou nom de variable dynamique

Posté : mer. 10 juin 2009 09:00
par lord1366
Bonjour,

Merci pour votre aide ça fonctionne.

Par contre pas besoin d'utiliser Eval("nomvariable")

Exemple sur un fichier XML

Code : Tout sélectionner


$xml = ObjCreate("Msxml2.DOMDocument")
        
$xml.Load("G:\Cockpit\Développement\Autoit\XML\" & $Choix & ".xml")
        
$Extract = $xml.documentElement

If $Extract.childNodes.length > 0 Then
        
For $cpt = 0 To $Extract.childNodes.length - 1
                
;~   MsgBox(0,'',$Extract.childNodes.item($cpt).tagName)
;~   MsgBox(0,'',$Extract.childNodes.item($cpt).text)
    Assign($Extract.childNodes.item($cpt).tagName, $Extract.childNodes.item($cpt).text,2)
                
Next

MsgBox(0,'',$ChildNode1)

EndIf

 
J'ai bien pris note des règles que j'appliquerai pour mes prochains messages.