Partage
  • Partager sur Facebook
  • Partager sur Twitter

Parse error

Erreur bête > sans doute...

Sujet résolu
    4 août 2006 à 13:31:53

    Salut !

    J'ai un petit problème sur un script..

    ceci me génère une erreur (Parse error: parse error, expecting `','' or `';'' in ):
    echo 'blabla'.$page-1.'blabla';


    Alors que ceci ne pose pas de problèmes et fonctionne parfaitement
    echo $page-1;


    Ceci fonctionne également :
    echo 'blabla'.$page.'blabla';


    Quel est mon problème et comment le résoudre ?

    merci !
    • Partager sur Facebook
    • Partager sur Twitter
      4 août 2006 à 13:38:20

      Et si tu fais:
      <?php
      echo('blabla'.($page-1).'blabla');
      ?>

      Ca ne fonctionne pas mieux???
      • Partager sur Facebook
      • Partager sur Twitter
        4 août 2006 à 14:34:07

        ça fonctionne merci :)

        mais je ne comprends toujoursd pas pùourquoi cela ne fonctionne pas sous cette forme :(
        echo 'blabla'.$page-1.'blabla';


        • Partager sur Facebook
        • Partager sur Twitter
          4 août 2006 à 15:08:45

          Il y a des règles de priorité dans l'interprétation des symboles d'une commande.

          Par exemple, un * est effectué avant un + dans une expression du style 1+1*2.

          Si deux symboles ont la même priorité, ils sont interprétés de gauche à droite.


          Pour en revenir à ton exemple, le point '.' doit avoir une priorité supérieur ou égale au signe '-' ce qui fait que le serveur interprête d'abord :
          echo 'blabla'.$page

          Et quand il arrive au signe '-', il est perdu. Pour lui, soit la commande est fini (d'où le expecting ";"), soit il y a une autre concaténation (d'où le expecting ",").

          Par contre, si tu met $page - 1 entre parenthèses, étant données que les parenthèses sont prioritaires sur tout, le serveur va d'abord lire ce qui est contenu dans les parenthèses et l'interprêter : ($page - 1) = 'quelque chose'. Puis il va ensuite interprêter le point "." : 'blabla'.'quelque chose'.'blabla' ce qui marche.

          Pour le cas de :
          echo $page-1;

          Il n'y a pas de point, le serveur interprête de gauche à droite (sachant que echo est une fonction, il interprête automatiquement echo $page-1; comme echo($page-1);). Il fait donc $page - 1 = 'truc'. Puis il fait echo 'truc';
          • Partager sur Facebook
          • Partager sur Twitter
            4 août 2006 à 15:50:58

            merci beaucoup pour cette précision très utile ;)
            je n'étais absolument pas au courant de ceci.

            à +
            • Partager sur Facebook
            • Partager sur Twitter

            Parse error

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown