[php] 0==""

salut

ma fonction commence comme ça :
function f($a="",$b="")
j’ai essayer de remplacer les “” par ‘’ ou NULL : aucun changement

le problème vient qd je passe 0 pour au moins 1 parametre : il sembleari que 0=="" , ce qui est plutot génant, pasque ça change complétement le résultat de la fonction
en l’occurence en gris c’est : if($a=="") action1; if ($a==0) action2
et là il me fait action1 si $a==0

si vous avez des idées …
merci @++

Ce message n’était pas conforme aux règles d’utilisation du nouveau forum :

0==’’ VRAI
0===’’ FAUX

Normal.

0 == ‘’ : la chaîne est casté en entier, et comme ça contient rien du tout, ça vaut 0. Donc 0 == 0.

Par contre, avec 0 === ‘’, pas de castage (de couille, :D)

Pour le reste :

http://fr.php.net/manual/fr/types.comparisons.php

merci :slight_smile:

bon en gros ça donne ça :

[cpp]function f($a="")
{
if($a==="") echo “vide”; else echo “plein”;
}
[/cpp]

par contre j’ai essayé ça aussi
[cpp]function f($a="")
{
if(""==$a) echo “vide”; else echo “plein”;
}
[/cpp]
ça donne exactement le meme problème
pourtant si a=0, a est un int, et il doit le caster en string pourle comparer à “”, or à priori (string)0 = “0” …

?

J’ai dis que $a est casté vers le type abstrait le plus bas, ici l’entier 0. Donc 0 == $a avec $a == ‘’ <=> à 0 == 0.

Et sinon écrit

echo $a === ‘’ ? ‘vide’:‘pleine’;