Bonjour,
Je suis bloqué sur un problème très simple de comparaison de variables. J'ai volontairement simplifier le code pour ne garder
que la structure et reproduire le problème. Voici le code :
Voici le résultat que j'obtiens avec PHP 5.03 et Apache 2.0.52 sous WinXP :<?php
// Un tableau de données (provient originellement d'une table MySQL)
$data[0] = "634.23";
$data[1] = "55.00";
$data[2] = "3.05";
// Une variable (provient originellement d'une table MySQL)
$b = 692.28;
// On parcours le tableau de données (j'ai pris un WHILE pour reproduire la structure exacte qui génère le problème
// Originellement, j'ai un "while ($row = mysqli_fetch_row($result)) {"
while (list($key, $a) = each($data)) {
      // J'imprime le type et les valeurs des variables avant de les comparer
      print gettype($a)."@$a@".gettype($b)."@$b@<br>";
      // Je compare mes variables
      if ($a <= $b) {
            // J'affiche le résultat de la comparaison
            print "a plus petit ou égal à b<br>";
            
            // Dans ce cas, je diminue la variable $b de la valeur $a
            $b = $b - $a;
      }
      else {
            // J'affiche le résultat de la comparaison
            print "a plus grand que b<br>";
      }
}
?>
Le problème c'est la dernière ligne : $a est égal à $b (3.05 à comparer avec 3.05, même s'il ne sont pas du même type, le transtypage devrait faire son boulot) et il me sort comme si $a était plus grand que $b.string@634.23@double@692.28@
a plus petit ou égal à b
string@55.00@double@58.05@
a plus petit ou égal à b
string@3.05@double@3.05@
a plus grand que b
Je n'y comprends plus rien. J'ai tester pas mal de choses (conversion en double des deux variables, test de la comparaison sans le while qui marche évidement très bien, ...).
Voilà, je soumet ce problème à votre sagacité, moi je suis bloqué. Est-ce un vilain bug ???
Merci pour votre aide.
Partager