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.
Voila la parcelle de code, incriminée. La variable $data est un tableau, que j'ai initialisé de la sorte
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; } }
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $valeur=0; $data = array('valeur' => $valeur);
Le seul moyen pour que ca marche, c'est de faire un Cast en String de $value et la ça va fonctionner ........
Est ce que quelqu'un peut m'expliquer pourquoi ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part if((string)$value=="@INCREMENTATION@")
Merci par avance de votre réponse.
Brice
Partager