IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Interprétation dynamique de code (eval)


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Inscrit en
    Juin 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Interprétation dynamique de code (eval)
    Bonjour à tous,

    J'ai tenté de faire quelque chose avec l'instruction eval() mais en vain. Peut-etre une erreur de syntaxe, peut-être la mauvaise direction ?

    Voilà ce que cherche à faire :

    j'aimerai mettre l'opérateur ">" ou "<" dans une variable, par exemple concret :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    if ($cas == 1) 
    { 
      $operateur = "<"; 
      $end = 10; 
      $sens = 1; 
    }
     
    if ($cas == 2) 
    { 
       $operateur = ">"; 
       $end = 1; 
       $sens = -1; 
    }
     
    for ($j = $start; $j $operateur $end; $j = $j + $sens)
    {
    code;
    }
    Mais malheureusement je n'arrive à mettre cet opérateur dans une variable pour que cela marche comme dans mon exemple.

    Quelle syntaxe dois-je utiliser ? quoi mon exemple ressemblerait avec la bonne maniere de faire ?

    Merci d'avance, cela me serait très utile

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Utiliser eval serait sans doute une bonne idée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    eval($j.$operateur.$end)

  3. #3
    Candidat au Club
    Inscrit en
    Juin 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Merci de cette réponse
    Malheureusement, j'ai une erreur

    Pour tester j'ai tapé ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
     
    $a = 0; 
    $b = 10;
    $operateur = "<";
     
    if (eval($a.$operateur.$b)) 
    	{ echo "top"; }
     
    ?>
    et j'ai comme erreur :
    Parse error: parse error, unexpected $end in C:\Program Files\EasyPHP 2.0b1\www\test\eval.php(7) : eval()'d code on line 1

    (la ligne 7 est celle du if)

    Que manque t-il ??

  4. #4
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Bonjour,

    essaie plutôt avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    eval('return $a '.$operateur.' $b;')

  5. #5
    Candidat au Club
    Inscrit en
    Juin 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Champion du monde Bravo !

    ça marche !

    Merci beaucoup

    Pour garder une trace correct de ce code voici l'illustration par le if et par le for :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
     
    $a = 0; 
    $b = 10;
    $operateur = "<";
     
    if (eval('return $a '.$operateur.' $b;')) 
    	{ echo "top"; }
     
    for ($x = $a; eval('return $x '.$operateur.' $b;'); $x++)
            { echo "</br>$x boucle"; }
     
    ?>
    On a le retour "Top" et on voit bien la boucle s'effectuer
    Si l'on inverse le signe de l'operateur en >, rien ne se passe logiquement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Rechargement dynamique de code
    Par sankukai35 dans le forum C
    Réponses: 4
    Dernier message: 30/03/2007, 14h17
  2. [VBA]Création dynamique de code
    Par Kloun dans le forum VBA Access
    Réponses: 4
    Dernier message: 28/03/2007, 17h22
  3. PHP n'interprète pas le code
    Par clarence dans le forum Apache
    Réponses: 2
    Dernier message: 27/12/2006, 17h36
  4. Modification dynamique de code html
    Par xtendance dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 10/10/2006, 11h55
  5. Chargement dynamique de code
    Par Ylias dans le forum C
    Réponses: 27
    Dernier message: 02/06/2006, 08h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo