Salut
Quelqu'un peut m'expliquer un truc la....
$toto=0;
if($toto=='quitter'){
echo "123";
}
Pourquoi ca m'affiche 123... ?








Salut
Quelqu'un peut m'expliquer un truc la....
$toto=0;
if($toto=='quitter'){
echo "123";
}
Pourquoi ca m'affiche 123... ?
Fais un echo $toto; avant ton if voir si il a bien pris le 0 et test en mettant $toto=1;

Je suppose que la raison est que tu compare un entier à une chaine
essais:
if (Integer.toString($toto)=='quitter'
déjà tu mets un chiffre pour ta variable donc elle est de type int.
Ensuite si le code ci dessous...
Code : Sélectionner tout - Visualiser dans une fenêtre à part $toto=0;
...affiche 123, c'est que tu as du mal recopier le post ou qu'il y a autre chose entre la définition de la variable et le if().
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 if($toto=='quitter'){ echo "123"; }
En tout cas, je ne voudrais pas reprendre un projet derrière toi. En quatre lignes tu définis une variable en int que tu testes ensuite en string avec des guillemets simples et si la condition est juste, tu affiches un string avec des guillemets doubles. Aucune rigueur...
Donc pour ta question, tu écris $toto=""; au lieu de $toto=0; et ça fonctionnera.








Désolé pour la syntaxe mais j'ai fais ça à la vite...Envoyé par zyongh
bref tu me dis de remplacer $toto=0; par $toto=""; Ce qui est complétement différent. Dans mon problème $toto doit valoir la valeur 0.
Imaginons que $toto est récupéré d'une autre page il peut etre int ou str,
et dans ce cas il vaut 0.
je fais alors mon test
Cela va m'afficher peu importe alors que ma variable contient 0 .... Et j'aimerais savoir pourquoi...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 $toto=0; if($toto=='quitter'){ echo 'peu importe'; } //Je tapes exactement ça comme code dans une page neuve ni plus ni moins...
Ps :Si je met 1 pour $toto alors la ca marche rien ne s'écrit je ne passes pas dans la boucle.Envoyé par J0r_x
Cela fonctionne en mettant $toto==1 pour la simple et bonne raison que la variable reste du même type (int).
Si tu veux absolument utiliser le 0 il faut que tu le mettes en type chaîne donc tu fais:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 $toto = strval(0); if($toto=='quitter'){ echo '123'; }
Je sais pas si c'est ce que tu veux mais tu peux essayer avec un triple égal, comme ça il compare le type de données en plus du contenu.
Tu dis que la variable $toto est récupéré d'une autre page alors que là, tu prends un exemple avec $toto déclarée en local. Ce qui n'a rien à voir. Car si par exemple tu récupère $toto d'un formulaire même s'il vaut 0 par le passage ($_POST ou $_GET) il sera transformé en string. Ton problème n'a docn plus lieu.
Partager