[Tableaux] Comparaison de valeur qui ne marche pas sans un Cast (string)
Bonjour à tous,
j'ai un fonctionnement très bizarre dans un "if". La condition n'est pas vérifiée et pourtant je passe dans le "if". Je m'explique avec le code.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| while (list($columns, $value) = each($data)) {
switch ((string)$value) {
default:
if($value=="@INCREMENTATION@")
{
$query .= $columns . " = " . $columns . " + 1, ";
}else{
if($value=="@DECREMENTATION@")
{
$query .= $columns . " = " . $columns . " - 1, ";
}else{
if( substr((string)$value, 0, 13)=="ADDFIELDVALUE")
{
$query .= $columns . ' = ' . substr($value,14) . ", ";
}else{
$query .= $columns . ' = \'' . tep_db_input($value) . '\', ';
}
}
}
break;
}
} |
Voila la parcelle de code, incriminée. La variable $data est un tableau, que j'ai initialisé de la sorte
Code:
1 2
| $valeur=0;
$data = array('valeur' => $valeur); |
Donc si je passe dans la moulinette ci dessus, je ne devrais pas passer dans les conditions if ="@INCREMENTATION@" et if = "@DECREMENTATION@". Et pourtant il passe dans la premier if, comme ci, $value valait "@INCREMENTATION@" !!!!! Hors on est d'accord que $value est égal à 0.
Le seul moyen pour que ca marche, c'est de faire un Cast en String de $value et la ça va fonctionner ........
Code:
if((string)$value=="@INCREMENTATION@")
Est ce que quelqu'un peut m'expliquer pourquoi ?
Merci par avance de votre réponse.
Brice