PHPIndex : Manipulation des variables de variables
Par Auteur INTERNE, jeudi 19 octobre 2000 à 06:59 :: Lu sur le Web :: #694 :: rss
Préambule
L'utilisation des variables est courante mais ce qui est encore plus intéressant c'est de pouvoir utiliser des variables de variables.
Qu'est ce qu'une variable de variable ? A quoi ca sert et pourquoi ne pas utiliser des tableaux à la place ?
Voilà de quoi s'occuper quelques minutes.
Présentation
Tout d'abord, que dit le manuel ?
Une section de la documentation est consacrée à ce type de variables :
http://www.php.net/manual/language.variables.variable.php
Pour résumer,
Une <b>variable</b> c'est ça : $ma_variable Et on l'initialise de la facon suivant : $ma_variable = "Bonjour";Et,
Une <b>variable de variable</b> ressemble à ceci : $$ma_variable Et on l'initialise de la même façon qu'une variable : $$ma_variable = "le monde";Mais la différence se situe sur l'appel d'une telle variable. En affichant mes deux variables j'ai :
print "$ma_variable ${$ma_variable}";
Et j'obtiens à l'écran :
Bonjour le mondeLe manuel continu avec une autre écriture :
print "$ma_variable $Bonjour";Pourquoi ? Et bien par ce qu'en initialisant la variable $$ma_variable = "le monde"; j'ai en fait créer une variable $Bonjour qui a été initialisée avec "le monde".
Enfin pour afficher ma chaîne "Bonjour le monde", il suffisait d'utiliser la combinaison de mes deux variables :
print "$ma_variable $Bonjour";
print "$ma_variable ${$ma_variable}";
print "$ma_variable ".$$ma_variable;
Quel différence entre la deuxième et la troisième solution ? Et bien les accolades servent à lever l'ambiguïté entre l'affichage du signe $ plus de la chaîne Bonjour ou de la valeur de la variable $$ma_variable soit "le monde". Cette ambiguïté est surtout valable pour les tableaux. Exemple :$ma_variable = "mon_tableau"; $mon_tableau[0] = "Bonjour comment ca va?";A l'affichage ou à la manipulation :
print $mon_tableau[0]; print $$ma_variable[0];Dans ce cas, PHP ne sait pas s'il faut afficher $mon_tableau[0] ou $m (première lettre de la chaîne mon_tableau). Il faut donc utiliser ici les { }. La bonne syntaxe pour afficher "Bonjour comment ca va?" devient alors,
print ${$ma_variable}[0];
A quoi ca sertAprès étude du manuel, à quoi sert les variables de variables ?
Et bien j'utilisais beaucoup les variables de variables en JavaScript dans mes pages html pour le procédé de Roll-Over (animation d'images lors d'un mouseover ou mouseout sur une image). L'avantage des variables de variables était de nommer les images pour pourvoir les précharger et en suite les manipuler.
Très utile en JavaScript ces variables auraient pue être très utiles en C également. La manipulation des tableaux étant complexes en C/C++, les variables de variables auraient facilité la vie de beaucoup de développeurs.
Quel rapport avec le PHP ? Comme elles existent pourquoi ne pas les utiliser ? De quelle façon ?
Et bien il est très utile d'utiliser ces variables pour les formulaires complexes contenant beaucoup de champs de mêmes type ou de même nom, ce qui facilite la maintenance du code et accélère le développement.
Exemple :
Pour un formulaire dont les champs sont composé d'une constante et d'une partie variable du type form_text_1, form_text_2, form_text_3, ... , form_text_10.
<FORM ...> <INPUT TYPE=text NAME="form_text_1" value=""> ...... <INPUT TYPE=text NAME="form_text_10" value=""> <INPUT TYPE=submit> </FORM>Pour simplifier le rapatriement des données et leur manipulation on peut utiliser une boucle for et récupérer chaque valeur et la tester (pour valider le formulaire avant enregistrement dans la base)
<?
for($i=1;$i<11;$i++)
{
if(!empty(${'form_text_'.$i}))
// vakeur OK
else
// valeur vide afficher erreur
}
?>
Cet exemple est très simple mais imaginer à quel point cela peut vous facilité la vie.Consulter le lien






Commentaires
#1 - Le dimanche 28 mai 2006 à 22:06, par tibo
#2 - Le lundi 26 mars 2007 à 15:34, par sebastien
#3 - Le mardi 22 septembre 2009 à 18:42, par mol
Ajouter un commentaire
Vous pouvez soumettre un commentaire en remplissant le formulaire ci-dessous. Toutes les contributions font l'objet d'une étape de modération par notre équipe.
Le code HTML dans le commentaire sera affiché comme du texte, les adresses internet seront converties automatiquement.