有两种不同类型的变量。但是在使用==运算符比较两个变量时,它会返回所需的输出。这个bug还是其他一些问题?我很惊讶。 这是代码,
$a=1000;
$b='1000square';
if($a==$b){
echo "a equal b";
}else{
echo "a not equal b";
}
输出:等于b。 但预计:不等于b。
任何人都可以解释一下吗?
感谢!!!
答案 0 :(得分:2)
$b
对一个数字进行类型转换,因此它可以是compared到$a
,因此生成的$b
(数字1000
)将等于$a
。如果要查明两个变量是否相同,而不仅仅是相等,则应使用===
而不是==
。 ===
不进行类型转换,只有两个变量的类型和相同时才返回true
。
答案 1 :(得分:1)
请使用此链接我认为这会对您有所帮助: -
答案 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,因为===
也会比较类型。这可能是您正在寻找的运营商。