Aller au contenu

PB de syntaxe


Sujets conseillés

Posté

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

Posté

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];

:)

Posté

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,

Posté

sans recourir a la concatenation, vous pouvez utiliser des accolades :

echo "<td>{$aff[$tab2[$u]]}</td>";

:)

Posté (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é par Dash
Posté
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 ?

Posté (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

<?php
error_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é par Dash
Posté
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

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...