205 votes

Noms de variables dynamiques en PHP

J'essaie d'utiliser des noms de variables dynamiques (je ne sais pas comment ils s'appellent), mais à peu près comme ceci:

 for($i=0; $i<=2; $i++) {
    $("file" . $i) = file($filelist[$i]);
}

var_dump($file0);
 

Le retour est null ce qui me dit que cela ne fonctionne pas. Je ne sais pas du tout quelle est la syntaxe ou la technique que je cherche, ce qui rend la recherche difficile. $filelist est défini plus tôt.

546voto

Sarfraz Points 168484

Enveloppez-les en {} :

 ${"file" . $i} = file($filelist[$i]);
 

Exemple de travail


Utiliser ${} est un moyen de créer des variables dynamiques, exemple simple:

 ${'a' . 'b'} = 'hello there';
echo $ab; // hello there
 

20voto

Joakim Johansson Points 2092

Essayez d’utiliser {} au lieu de () :

 ${"file".$i} = file($filelist[$i]);
 

5voto

Tom Points 1

Je le fais assez souvent sur les résultats renvoyés par une requête.

par exemple

 // $MyQueryResult is an array of results from a query

foreach ($MyQueryResult as $key=>$value)
{
   ${$key}=$value;
}
 

Maintenant, je peux simplement utiliser $ MyFieldname (ce qui est plus facile dans les instructions echo, etc.) plutôt que $ MyQueryResult ['MyFieldname']

Oui, c'est probablement paresseux, mais je n'ai jamais eu de problèmes.

2voto

corysus Points 239

Tom, si vous avez un tableau existant, vous pouvez convertir ce tableau en objet et l'utiliser comme ceci:

 $r = (object) $MyQueryResult;
echo $r->key;
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X