PHP - 比较两个不同类型的变量bug或问题

时间:2013-08-26 12:13:47

标签: php

有两种不同类型的变量。但是在使用==运算符比较两个变量时,它会返回所需的输出。这个bug还是其他一些问题?我很惊讶。 这是代码,

$a=1000;
$b='1000square';
if($a==$b){
    echo "a equal b";
}else{
    echo "a not equal b";
}

输出:等于b。 但预计:不等于b。

任何人都可以解释一下吗?

感谢!!!

3 个答案:

答案 0 :(得分:2)

$b对一个数字进行类型转换,因此它可以是compared$a,因此生成的$b(数字1000)将等于$a。如果要查明两个变量是否相同,而不仅仅是相等,则应使用===而不是=====不进行类型转换,只有两个变量的类型相同时才返回true

答案 1 :(得分:1)

请使用此链接我认为这会对您有所帮助: -

http://php.net/manual/en/function.gettype.php

答案 2 :(得分:1)

PHP中=====之间存在差异。请参阅文档:http://dk1.php.net/manual/en/language.operators.comparison.php

语句$a==$b中发生的事情是PHP需要决定如何比较$a$b。由于至少有一个操作数($a)是一个数字,PHP使用数字比较而不是字符串比较。因此$b将转换为数字。在PHP中,字符串'1000square'将转换为数字1000.这就是您的代码显示$a==$b为真的原因。

但是,$a===$b为false,因为===也会比较类型。这可能是您正在寻找的运营商。