JeuWeb - Crée ton jeu par navigateur
comparations de types en php [Réglé] - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : comparations de types en php [Réglé] (/showthread.php?tid=3085)

Pages : 1 2


comparations de types en php [Réglé] - Ludvig - 22-09-2008

Question à 1€, qu'affiche ceci (en php) ?

Code PHP :
<?php 
$do
=0;
if(
$do=='dropmoney')die('argh');


Dit moi que je ne suis pas bien réveillé, que j'ai confondu un truc là !


Ca affiche bien 'argh' ...


Es bien normale docteur ?



/Lud


RE: comparations de types en php - Thedeejay - 22-09-2008

tu as mis 2 = non? c'est pas bon si? (il faut que je replonge dans mes cours, j'ai pris l'habitude du vb)


RE: comparations de types en php - P0ulp0r - 22-09-2008

T'as besoin d'argent toi ^^


Moi aussi, veux qu'on me drop de la money :glace:


RE: comparations de types en php - Argorate - 22-09-2008

Tu demande SI 0 == une chaine de caractere... le if retourn false, il ne devrait pas faire ton die, qui n'a rien a faire là, c'es tplutot un echo pour afficher. (c'est peut etre pour ça qu'il execute le die?) j'ai jamais utilisé le die comme ça moi...


RE: comparations de types en php - Ludvig - 22-09-2008

Je ne comprends pas pourquoi ça marche pas (enfin pourquoi ça marche !)

normalement si on veut comparer les types (aussi) on utilise === non ?

Et pour le die(), c'est bien sûr pour pas avoir a donner de l'argent Smile


Si ça a un importance :
Je viens d'effectuer le fastidieux (nécessaire ?) travail pour passer
global_vars = off, donc le $do reçoit la valeur (& type) du $_GET('do');


RE: comparations de types en php - Hakushi - 22-09-2008

il faut écrire si tu veux comparer par type uniquement.

Code PHP :
<?php 
$do
=0;
if(
$do ==='dropmoney')die('argh');

ou

Code PHP :
<?php 
$do
=0;
if(
strval($do) =='dropmoney')die('argh');

d'ailleurs si tu fais
Code PHP :
<?php 
var_dump
($do =='dropmoney');
Tu verras que tu obtiens un boolean(true).

Lorsqu'une chaîne de caractères est évaluée comme une valeur numérique, le résultat et le type de la variable sont déterminés comme suit.

La chaîne de caractères est de type "double" si elle contient un des caractères '.', 'e' ou 'E'. Sinon, elle est de type entier ("integer" ).

La valeur est définie par la première partie de la chaîne. Si la chaîne de caractères débute par une valeur numérique cette valeur sera celle utilisée. Sinon, la valeur sera égale à 0 (zéro). Les données numériques valides ont un signe optionnel, suivies par un ou plusieurs digits (optionnellement, contenant un point de décimal), suivies par un exponentiel optionnel. L'exponentiel peut être un 'e' ou un 'E' suivi par un ou plusieurs digits.

tu trouveras plus d'infos sur http://fr.php.net


RE: comparations de types en php - Paul - 22-09-2008

Je crois plutôt (à vérifier) que le triple égal vérifie l'égalité des deux chaînes + la conformité des types. Je m'explique :

Si on fait un

Code :
$int = 0;
$boolean = false;

Alors ($int == $boolean) vaudra true mais ($int === $boolean) vaudra false.
Dans le premier cas on vérifie uniquement la valeur, or un 0 vaut un false. Dans le second cas on vérifie le type des variables aussi.


RE: comparations de types en php - Ter Rowan - 22-09-2008

à mon avis comme tu utilises == (et pas ===) php convertit "dropmoney" en entier (car $do est un entier)

"dropmoney" en entier ça donne 0 donc c'est normal

essaie de le faire à l envers

if ("dropmoney" == $do)

histoire de voir ^^


RE: comparations de types en php - Hakushi - 22-09-2008

Paul a écrit :Je crois plutôt (à vérifier) que le triple égal vérifie l'égalité des deux chaînes + la conformité des types. Je m'explique :

Si on fait un

Code :
$int = 0;
$boolean = false;

Alors ($int == $boolean) vaudra true mais ($int === $boolean) vaudra false.
Dans le premier cas on vérifie uniquement la valeur, or un 0 vaut un false. Dans le second cas on vérifie le type des variables aussi.


Je sais, juste que === t'evites de te tromper quand tu essayes de comparer un int et un string...
D'ailleurs je recommande d'initialiser un string a "" et non a 0, pour que PHP fasse le typage lui meme...

@Ter Rowan : Cf ce que je dis plus haut sur la facon dont PHP traite les comparaisons int/string Wink


RE: comparations de types en php - Zack - 23-09-2008

En fait, t'as oublié les {} dans ta condition, sans cela ca ne peut pas marcher non ?

A la place de :
Citation :$do=0;
if($do=='dropmoney')die('argh');

Mets plutot :
Citation :$do = 0;
if ($do == 'dropmoney') {die('Argh');}

Ca devrait plus t'afficher le die normalement vu que la condition n'est pas vérifié.