Question basique d'un débutant

JMB
Petit nouveau ! | 6 Messages

20 avr. 2009, 16:38

Bonjour à tous et merci pour celui qui pourrait m'expliquer ceci :
Premier code fonctionne correctement (on s'en serait douter) :
<?php
    $a=2;
    $b=2;
    $c=3;
    $d=5;

    if(($a==$b) AND ($c==$d)){
        printr 'ok';
        }Else{
        printr 'pas ok';
        }
?>


deuxième code : le résultat des conditions ne sont pas correctes, Où est l'erreur de syntaxe :
<?php
    $a=2;
    $b=2;
    $c=3;
    $d=5;

    $condition ='($a==$b)';

    //j'ajoute une condition, seulement si d>c
    if($d>$c){
        $condition .='AND';
        $condition .='($c==$d);
        }

    if($condition){
        printr 'ok';
        }Else{
        printr 'pas ok';
        }
?>

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

20 avr. 2009, 16:44

Premier code fonctionne correctement (on s'en serait douter)
c'est à dire qu'il affiche pas ok. On est bien d'accord ?


Ta variable $condition est initialisée avec la chaîne '($a==$b)'.
Sa valeur finale sera soit '($a==$b)', soit '($a==$b)AND($c==$d)' (sans espaces, en plus !)

Ton test if($condition) équivant à if('($a==$b)AND($c==$d)')
cad un test sur une chaine de caractères et non sur une expression booléenne.

:idea: Jette un oeil sur la fonction eval()... ;)

JMB
Petit nouveau ! | 6 Messages

20 avr. 2009, 16:48

Merci beaucoup, je me doutais qu'il y avait un souci entre les valeurs booléennes et des strings.