2013-08-26 70 views
1

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

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

它输出:一个等于湾 但预计:不等于b。

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

谢谢!

+0

恭喜,你已经发布了一些代码,关心分享你的输出? –

+0

http://php.net/manual/zh/language.operators.comparison.php – Bora

回答

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是错误的,因为===也会比较类型。这可能是您正在寻找的操作员。

2
$b

被强制转换为一个号码,以便它可以是compared$a,因此所得$b(数1000)将等于$a。如果要查明两个变量是否为相同,而不是等于,则应该使用===而不是=====不是类型转换,只有返回true如果两个变量都是相同类型相等。