2010-11-11 33 views
4

Je veux tester si une var est identique (type et valeur) à l'une des trois possibilités.utilisant l'opérateur de comparaison identique (===) si l'instruction échoue si elle n'est pas utilisée seule?

Je fais:

if(($var === 0) || ($var === '0') || ($var === 'false')) 
    // do something 

Mais cela se traduit par l'erreur suivante:

Fatal error: Call to undefined function () in /htdocs/thefile.php on line xxx

Si, au contraire, j'utilise simplement les opérateurs égalité de comparaison comme ceci:

if(($var == 0) || ($var == '0') || ($var == 'false')) 
    // do something 

Non erreur est levée, mais ce n'est pas le contrôle de comparaison que je veux faire ..

Maintenant, si j'essaie juste avec une comparaison identique, il va bien:

if(($var === 0)) 
    // do something.. this throws no error :) 

Aucune erreur est levée ..

Alors, que suis-je manque ici ... Pourquoi la première ligne non travail, et quelle serait la bonne façon de faire ce que je suis après ici?

+1

Cela fonctionne pour moi ... Pourriez-vous fournir les lignes de code environnantes? Est-ce vraiment la ligne où l'erreur est? – lonesomeday

+0

Cela pourrait être un bug. Afficher le script complet, nommez la version PHP et plattform. Sinon non diagnosticable avec juste '// faire quelque chose '. – mario

+1

OMG, désolé filles/gars se sentir comme un imbécile ici .. un espace dur s'était faufilé dans au lieu d'un espace normal, j'ai couru un test sur tous les caractères invisibles .. maintenant ça fonctionne bien (avec ou sans l'extra accolades .. mais vous avez raison, ils étaient redondants, alors ils sont partis maintenant, merci :)), désolé à ce sujet. – mikkelbreum

Répondre

1

L'opérateur === vérifie le type de la variable et ...

Cela devrait être suffisant:

if (!$var) {} 
+1

! $ Var sera VRAI si $ var est booléen (faux) ce que je ne veux pas. Je veux que ce soit vrai seulement si $ var est une chaîne ('faux'). Pour cette raison, je ne peux pas utiliser if (! $ Var). – mikkelbreum

+0

@mikkelbreum: +1 merci pour cela, en relisant votre question Je pense que j'ai complètement embrouillé ce que vous espériez réaliser dans mon esprit. : - / – stealthyninja

-1
<?php 
      $x=10; 
      $y="10"; 
echo ($x==$y); 
echo ($x===$y); 
?> 

Voici les o/p: bool (ture) , booléen (faux). car ici "10" est considéré comme une chaîne. Dans Opérateur identique, non seulement il vérifie la valeur mais aussi le type de données. Donc, nous sommes en comparant la chaîne avec le type de données entier. il en résulte faux.