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…

php-logo-elephant

Voici une solution possible via la structure même de PHP, en suivant notre exemple, ça donnerait par exemple :

$var1 = 'Hello';
$var2 = 'Bonjour';
$var3 = 'Hola';

$varX1 = 'the';
$varX2 = 'le';
$varX3 = 'el';

$varXX1 = 'World';
$varXX2 = 'Monde';
$varXX3 = 'Mundo';

$i = 1;

echo ${'var'.$i}.' ';
echo ${'varX'.$i}.' ';
echo ${'varXX'.$i};

// Donnera Hello the World

 

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é :

$var1 = 'Hello';
$var2 = 'Bonjour';
$var3 = 'Hola';

$varX1 = 'the';
$varX2 = 'le';
$varX3 = 'el';

$varXX1 = 'World';
$varXX2 = 'Monde';
$varXX3 = 'Mundo';

if($_GET['lang'] == 'en')
$i = 1;
elseif($_GET['lang'] == 'es')
$i = 3;
else
$i = 2;

echo ${'var'.$i}.' ';
echo ${'varX'.$i}.' ';
echo ${'varXX'.$i};

// Donnera une phrase selon le pays passé en argument $_GET

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 :

Author: Franck Pertegas

Share This Post On

7 Comments

  1. 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.

    Post a Reply
  2. 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.

    😉

    Post a Reply
  3. Peux-tu rajouter une option pour être prévenu par mail de nouveau commentaire ??
    S.

    Post a Reply
  4. Bonjour syndrael,

    Il est maintenant possible de recevoir les notifications de nouveaux commentaires 😉

    Post a Reply
  5. Je connaissais la technique mais… je n’ai jamais eu l’occasion ni l’utilité de m’en servir. Merci pour ce sympathique article.

    Post a Reply

Trackbacks/Pingbacks

  1. Google – Mais où est passé mon Page Rank (PR) ? | LudiBlog - [...] PHP – Créer une variable depuis une variable [...]
  2. Google – Mais où est passé mon PageRank (PR) ? | LudiBlog - [...] PHP – Créer une variable depuis une variable [...]
  3. Conception web – Forcer le cache à se vider pour vos fichiers CSS, JS et vos images | LudiBlog - [...] PHP – Créer une variable depuis une variable [...]

Répondre à LudiKadmin Annuler la réponse

Votre adresse e-mail ne sera pas publiée.