Page 1 sur 1
[Résolu] Opérateur de comparaison dans une variable ?
Posté : 04 févr. 2012, 21:40
par mixounet
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
Re: opérateur de comparaison dans une variable ?
Posté : 04 févr. 2012, 22:54
par sirakawa
l'opérateur PHP de comparaison est ==, = est l'affectation qui rend toujours juste???
Re: opérateur de comparaison dans une variable ?
Posté : 04 févr. 2012, 23:41
par Invité
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;
}
Re: opérateur de comparaison dans une variable ?
Posté : 04 févr. 2012, 23:48
par Ryle
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..
Re: opérateur de comparaison dans une variable ?
Posté : 05 févr. 2012, 00:41
par Invité
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)...

Re: [Résolu] Opérateur de comparaison dans une variable ?
Posté : 05 févr. 2012, 10:57
par sirakawa
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.