Grantome Posté 18 Novembre 2004 Posté 18 Novembre 2004 Salut, Comment ecrire ça correctement pour ne pas avoir d'erreur ? J'ai essayé comme ceci: echo "<td>$aff[$tab2[$u]]</td>"; Parse error: parse error, unexpected '[', expecting ']' on line 43 Normal.... Donc, j'ai essayé comme ceci: echo "<td>$aff['$tab2[$u]']</td>"; Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING on line 43 Merci
Grantome Posté 18 Novembre 2004 Auteur Posté 18 Novembre 2004 Bon, j'ai fais autrement... Plus lourd, mais ça fonctionne.
Titag Posté 18 Novembre 2004 Posté 18 Novembre 2004 Salut, Tu as fait comment ? Parce que pour faire des tableau à 2 dimensions, la syntaxe correcte de ce que tu as ecrit intuitivement c'est : echo $aff[$tab2][$u];
Compte supprimé Posté 18 Novembre 2004 Posté 18 Novembre 2004 C'est pas un tableau à 2 dimensions mais un tableau à 1 dimension. Tu ne peux laisser dans les chaines que les variables simples. Dans ton cas il fait concatener : echo "<td>".$aff[$tab2[$u]]."</td>"; Cordialement,
Dash Posté 18 Novembre 2004 Posté 18 Novembre 2004 sans recourir a la concatenation, vous pouvez utiliser des accolades : echo "<td>{$aff[$tab2[$u]]}</td>";
Compte supprimé Posté 18 Novembre 2004 Posté 18 Novembre 2004 Ce ne serait pas plutôt echo "<td>${aff[$tab2[$u]]}</td>"; ??
Dash Posté 18 Novembre 2004 Posté 18 Novembre 2004 (modifié) c'est ici equivalent. Mais si vous regardez plus loin (classes, etc.) vous pourrez constater que la syntaxe suivante ne fonctionne pas : echo "pres-texte ${instance->methode()} post-texte"; contrairement a : echo "pres-texte {$instance->methode()} post-texte"; Alors pourquoi ne pas prendre des "bonnes" habitudes pour pouvoir conserver la meme syntaxe dans tous les cas ? Modifié 19 Novembre 2004 par Dash
Anonymus Posté 19 Novembre 2004 Posté 19 Novembre 2004 c'est ici equivalent. Mais si vous regardez plus loin (classes, etc.) vous pourrez constater que la syntaxe suivante ne fonctionne pas : contrairement a : Alors pourquoi ne pas prendre des "bonnes" habitudes pour pouvoir conserver la meme syntaxe dans tous les cas ? <{POST_SNAPBACK}> Dash, Je n'ai pas compris. Tu n'aurais pas une erreur de copier/coller ?
Dash Posté 19 Novembre 2004 Posté 19 Novembre 2004 (modifié) je me suis peut-etre mal explique... Pour des objets "simples", il y a equivalence entre mettre l'accolade avant ou apres le symbole '$'. echo "<td>${aff[$tab2[$u]]}</td>"; produira un resultat equivalent a echo "<td>{$aff[$tab2[$u]]}</td>"; Par contre, si l'on manipule des objets plus "complexes" (classes et autres), mettre l'accolade avant ou apres le symbole '$', provoquera des effets differents. voici un exemple avec simplexml <?phperror_reporting( E_ALL );$content = <<<HERE_DOC<?xml version="1.0" encoding="iso-8859-1"?><root> <element1>ValOfText</element1></root>HERE_DOC;$xml = simplexml_load_string($content);echo "pre-texte - ${xml->element1} - post-texte";?> L'ecriture "${xml->element1}" produit une erreur, contrairement a "{$xml->element1}" qui affiche une valeur. Au vu de cela, je suggere de prendre l'habitude de mettre systematiquement l'accolade avant le symbole '$'. Pour pouvoir toujours garder la meme construction syntaxique quelque soit le type d'objet(s) a traiter Modifié 19 Novembre 2004 par Dash
Dan Posté 19 Novembre 2004 Posté 19 Novembre 2004 je me suis peut-etre mal explique... Tu as surtout choisi les mauvais exemples... regardes ton post précédent: tu mets deux fois le même exemple en disant que l'un marche et l'autre pas Il faut lire: Mais si vous regardez plus loin (classes, etc.) vous pourrez constater que la syntaxe suivante ne fonctionne pas :echo "pres-texte ${instance->methode()} post-texte";contrairement a :echo "pres-texte {$instance->methode()} post-texte"; Dan
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant