PHP – Créer une variable depuis une variable
Bonjour à tous,
Me revoilà (après pas mal de temps) pour une petite astuce PHP, du moins, c’est surtout pour répondre à une question qui me fût posée plusieurs fois. A savoir : « comment créer ou obtenir une variable selon une variable déjà existante ? ».
Exemple, j’ai une variable $var1, une autre $var2 et une 3ème logiquement $var3, et je souhaite retourner un résultat qui dépendra de certaines conditions, mais le résultat sera soit $var1, $var2 ou $var3. Bon, l’exemple est tellement simpliste qu’on ne voit pas trop l’utilité, mais imaginons que nous devons retourner X résultats dépendant d’une seul variable, donc $varX1, $varX2 ou $varX3 en plus et $varXX1, $varXX2 ou $varXX3 en plus etc…
Voici une solution possible via la structure même de PHP, en suivant notre exemple, ça donnerait par exemple :
[pastacode lang= »php » manual= »%24var1%20%3D%20’Hello’%3B%0A%24var2%20%3D%20’Bonjour’%3B%0A%24var3%20%3D%20’Hola’%3B%0A%0A%24varX1%20%3D%20’the’%3B%0A%24varX2%20%3D%20’le’%3B%0A%24varX3%20%3D%20’el’%3B%0A%0A%24varXX1%20%3D%20’World’%3B%0A%24varXX2%20%3D%20’Monde’%3B%0A%24varXX3%20%3D%20’Mundo’%3B%0A%0A%24i%20%3D%201%3B%0A%0Aecho%20%24%7B’var’.%24i%7D.’%20’%3B%0Aecho%20%24%7B’varX’.%24i%7D.’%20’%3B%0Aecho%20%24%7B’varXX’.%24i%7D%3B%0A%0A%2F%2F%20Donnera%20Hello%20the%20World » message= » » highlight= » » provider= »manual »/]
Vous l’aurez compris, ça peut aider pour une multitude d’éléments dépendants d’une même variable, le truc c’est de mettre entre crochets le nom de la variable qui va se construire (${‘MaVariable’}).
Bon, certes on peut le faire avec des tableaux et donc utiliser les tableaux, mais sachez qu’on peut le faire ainsi aussi et certaines situations font que l’on peut préférer procéder ainsi.
Voici, notre exemple précédent légèrement modifié :
[pastacode lang= »php » manual= »%24var1%20%3D%20’Hello’%3B%0A%24var2%20%3D%20’Bonjour’%3B%0A%24var3%20%3D%20’Hola’%3B%0A%0A%24varX1%20%3D%20’the’%3B%0A%24varX2%20%3D%20’le’%3B%0A%24varX3%20%3D%20’el’%3B%0A%0A%24varXX1%20%3D%20’World’%3B%0A%24varXX2%20%3D%20’Monde’%3B%0A%24varXX3%20%3D%20’Mundo’%3B%0A%0Aif(%24_GET%5B’lang’%5D%20%3D%3D%20’en’)%0A%24i%20%3D%201%3B%0Aelseif(%24_GET%5B’lang’%5D%20%3D%3D%20’es’)%0A%24i%20%3D%203%3B%0Aelse%0A%24i%20%3D%202%3B%0A%0Aecho%20%24%7B’var’.%24i%7D.’%20’%3B%0Aecho%20%24%7B’varX’.%24i%7D.’%20’%3B%0Aecho%20%24%7B’varXX’.%24i%7D%3B%0A%0A%2F%2F%20Donnera%20une%20phrase%20selon%20le%20pays%20pass%C3%A9%20en%20argument%20%24_GET » message= » » highlight= » » provider= »manual »/]
On voit un peu plus l’intérêt via cet exemple, même si je me répète, un tableau aurait bien pu faire l’affaire.
C’est pour visualiser d’autres possibilités via PHP.
Si vous avez d’autres idées ou des commentaires, n’hésitez pas 😉
Bon code à tous !
Articles qui peuvent vous intéresser :
19 août 2011
En user, sans en abuser..
Je veux dire par là que pour la compréhension du programme il vaut mieux éviter de les utiliser pour tout et n’importe quoi, sachant que dans 99% des cas un tableau indexé avec le nom des variables comme clé peut suffire.
D’autant que je suis un inconditionnel des unset pour éviter des ‘effets de bord’ (avec des guillemets)..
S.
19 août 2011
Salut Syndrael,
Merci pour le commentaire.
En effet, tu as tout fait raison, et j’ai aussi préféré le souligner dans l’article.
Ce billet, est vraiment écrit pour faire découvrir une possibilité avec PHP et pour répondre à une question qui me vient souvent, à savoir : « est-il possible de concaténer un nom de variable et si oui, comment fait-on ? »
Pour du petit script rapide, ça peut s’avérer utile, mais certes, pas indispensable.
C’est aussi toujours agréable de découvrir des fonctionnements que l’on ne connait pas forcément en PHP ou qu’on a pas l’habitude de pratiquer.
😉
21 août 2011
Peux-tu rajouter une option pour être prévenu par mail de nouveau commentaire ??
S.
22 août 2011
Je vais prendre le temps de le rajouter dans la semaine 😉
23 août 2011
Bonjour syndrael,
Il est maintenant possible de recevoir les notifications de nouveaux commentaires 😉
14 septembre 2011
Je connaissais la technique mais… je n’ai jamais eu l’occasion ni l’utilité de m’en servir. Merci pour ce sympathique article.
14 septembre 2011
@accessibilité web : merci pour le commentaire 🙂