ben justement, ${mavariable} ca ne veux rien dire.
Quand l'interpréteur PHP voit ca il dit :
* "$" (dollar) ! donc ce qui suit est une variable !
* "{" ! Ok, c'est une variable dynamique dont le nom est construit a la main !
* "mavariable" ! mmmhhhhh... c'est pas une chaine entre guillemet, c'est donc une constante !
* (parcours de la table de constante) ! Mince ! "mavariable" existe pas dans la liste des constantes connues ! Le developpeur a du se planter et oublier les guillemets (tssss...) je vais le considerer comme une chaine de caracteres
* "}" ! Ok, c'est la fin du nom de ma variable dynamique, c'est quoi son nom au final ? "mavariable" ! Ok, Donc le nom de la variable est "$mavariable"
* $mavariable !
Comme tu vois, tu tortures le pauvre interpréteur parce que ${mavariable} c'est la version super crade de $mavariable et ca sert a rien ;o)
Les accolades sont là pour 2 raisons uniquement :
* Construire des variables dynamiques :
1 2 3
| $i=42;
${'maVariableNumero'.$i} = 'toto';
echo $maVariableNumero42; // affiche "toto"; |
* Aider le parseur lorsque la variable est incluse dans une chaine de caractere sans etre séparée d'espace ou de caracteres invalides pour une variable :
1 2 3 4
| $maVariable=42;
echo "Ca vaut $maVariableeuros"; // genere une erreur, $maVariableeuros inconnue
echo "Ca vaut {$maVariable}euros"; // affiche "Ca vaut 42euros"
echo "Ca vaut $maVariable euros"; // affiche "Ca vaut 42 euros" |
Comme tu vois, dans le 2eme cas, l'accolade ouvrante est située AVANT le dollar.
Pour finir je dirais que en regle générale :
* Un tableau est plus interessant que d'utiliser des variables dynamique pour le 1er cas
* La concaténation de chaine, sprintf, printf, et cie permettent de s'affranchir du 2eme cas.
Et si tu veux vraiment eviter les problemes, je te déconseille fortement l'utilisation d'un tableau dans une chaine de caractere...
echo "... $tableau[truc]....";
est une horreur, accolade ou pas, parce que le parseur n'a aucun moyen de savoir que "truc" est une chaine et pas une constante.
Donc
'...'.$tableau['truc'].'....';
Fladnag, defenseur des pauvres parseurs PHP qui en voient de belles a longueur de journée ;o)
Partager