PHP - 比较两种不同类型的变量bug或问题
问题描述:
有两种不同类型的变量。但是在使用==运算符比较两个变量的同时,它会返回weired输出。这个错误还是其他一些问题?我很惊讶。 这里是代码,PHP - 比较两种不同类型的变量bug或问题
$a=1000;
$b='1000square';
if($a==$b){
echo "a equal b";
}else{
echo "a not equal b";
}
它输出:一个等于湾 但预计:不等于b。
任何人都可以解释一下吗?
谢谢!
答
有==
和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
是错误的,因为===
也会比较类型。这可能是您正在寻找的操作员。
答
$b
被强制转换为一个号码,以便它可以是compared到$a
,因此所得$b
(数1000
)将等于$a
。如果要查明两个变量是否为相同,而不是等于,则应该使用===
而不是==
。 ===
不是类型转换,只有返回true
如果两个变量都是相同类型和相等。
恭喜,你已经发布了一些代码,关心分享你的输出? –
http://php.net/manual/zh/language.operators.comparison.php – Bora