[Résolu] Opérateur de comparaison dans une variable ?

Petit nouveau ! | 1 Messages

04 févr. 2012, 21:40

Bonjour à tous,

Je rencontre actuellement un pb.

Je souhaiterai savoir comment utiliser un opérateur de comparaison dans une variable.

Exemple :

Code : Tout sélectionner

$nb1 = 1; $nb_1 = 2; $op1 = '='; if($nb1 $op1 $nb_1) { echo 'OK'; } else { echo 'KO'; }
Il me retourne toujours OK...

Cela ne marche évidemment pas. J'ai essayé la concaténation, idem, la fonction eval() même résultat... Si vous avez une idée ou la solution, je suis plus que preneur :)

Merci d'avance
Modifié en dernier par mixounet le 05 févr. 2012, 00:42, modifié 1 fois.

Mammouth du PHP | 2278 Messages

04 févr. 2012, 22:54

l'opérateur PHP de comparaison est ==, = est l'affectation qui rend toujours juste???
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Invité
Invité n'ayant pas de compte PHPfrance

04 févr. 2012, 23:41

J'ai fait une fonction pour ne plus avoir de souci :

Code : Tout sélectionner

function oper($nb1, $op, $nb2) { if($op == '=' && $nb1 == $nb2) { $val = TRUE; } elseif($op == '<=' && $nb1 <= $nb2) { $val = TRUE; } elseif($op == '<' && $nb1 < $nb2) { $val = TRUE; } elseif($op == '>' && $nb1 > $nb2) { $val = TRUE; } elseif($op == '>=' && $nb1 >= $nb2) { $val = TRUE; } else { $val = FALSE; } return $val; }

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

04 févr. 2012, 23:48

Tu peux également utiliser eval() pour évaluer une chaine de code en php :
$nb1 = 1;
$nb2 = 2;
$op = '=='; 
$val = eval($nb1 . $op . $nb2);
Nota : il faut pour cela que le code php évalué soit valide et s'assurer, si les valeurs sont fournies par un utilisateur, que celles-ci ne contiennent pas de code malicieux..
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Invité
Invité n'ayant pas de compte PHPfrance

05 févr. 2012, 00:41

Ha génial merci pour le eval(), j'ai passé une heure à essayer de le faire marcher correctement :S (mais je n'ai pas tenté cette mise en place)... :(

Mammouth du PHP | 2278 Messages

05 févr. 2012, 10:57

Je sais bien que c'est la tarte à la crème de PHP que d'utiliser &&, et de ne pas parenthéser. Ça suffit souvent, mais il est de meilleure programmation d'écrire
(($op == '=') && ($nb1 == $nb2))
au lieu de :
($op == '=' && $nb1 == $nb2)
au moins on VOIT la structure de son expression booléennes et les priorités sont marquées par les parenthèses.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD