Php 如果在if语句中使用相同的比较运算符(==),如果不单独使用,则会失败?
我想测试一个var是否与三种可能性中的一种相同(类型和值) 因此,我:Php 如果在if语句中使用相同的比较运算符(==),如果不单独使用,则会失败?,php,comparison,conditional-operator,Php,Comparison,Conditional Operator,我想测试一个var是否与三种可能性中的一种相同(类型和值) 因此,我: if(($var === 0) || ($var === '0') || ($var === 'false')) // do something 但这会导致以下错误: 致命错误:调用xxx行/htdocs/thefile.php中未定义的函数() 如果相反,我只是使用如下等比较运算符: if(($var == 0) || ($var == '0') || ($var == 'false')) // do s
if(($var === 0) || ($var === '0') || ($var === 'false'))
// do something
但这会导致以下错误:
致命错误:调用xxx行/htdocs/thefile.php中未定义的函数()
如果相反,我只是使用如下等比较运算符:
if(($var == 0) || ($var == '0') || ($var == 'false'))
// do something
没有抛出错误,但这不是我要进行的比较检查
现在,如果我试着用一个相同的比较,就可以了:
if(($var === 0))
// do something.. this throws no error :)
不会抛出任何错误
所以我在这里错过了什么。。。
为什么第一行不起作用,我想说的正确方法是什么?操作符也会检查变量的类型 这就足够了:
if (!$var) {}
以下是o/p:bool(真),bool(假)。
因为这里“10”被认为是字符串。
在同一运算符中,它不仅检查值,还检查数据类型
正在将字符串与整数数据类型进行比较。所以它的结果是错误的。这对我来说很有效。。。你能提供周围的代码行吗?这肯定是错误所在的线路吗?这可能是一个错误。显示完整的脚本、名称PHP版本和平台。否则就不能用
//做点什么
。天哪,对不起,这里的女孩/男孩感觉自己像个傻瓜。。一个硬空间取代了普通空间,我对所有看不见的角色进行了测试。。现在它可以正常工作了(有或没有额外的支架..但你是对的,它们是多余的,所以它们现在不见了,谢谢:),…对此感到抱歉。+1对这个秘密的诚实解释$如果$var是bool(false),那么var将为TRUE,这是我不想要的。我希望它只有在$var是string('false')时才为true。出于这个原因,我不能使用if(!$var)。@mikkelbreum:+1谢谢你,重读你的问题,我想我完全搞糊涂了你在我心目中希望实现的目标-/
<?php
$x=10;
$y="10";
echo ($x==$y);
echo ($x===$y);
?>