有两种不同类型的变量。但是在使用 == 运算符比较两个变量时,它会返回奇怪的输出。这是错误还是其他问题?我很惊讶。这是代码,
$a=1000;
$b='1000square';
if($a==$b){
echo "a equal b";
}else{
echo "a not equal b";
}
它输出:a等于b。但预期:a不等于b。
谁能解释一下?
谢谢!!!
有两种不同类型的变量。但是在使用 == 运算符比较两个变量时,它会返回奇怪的输出。这是错误还是其他问题?我很惊讶。这是代码,
$a=1000;
$b='1000square';
if($a==$b){
echo "a equal b";
}else{
echo "a not equal b";
}
它输出:a等于b。但预期:a不等于b。
谁能解释一下?
谢谢!!!
$b
将类型转换为数字,因此可以将其与进行比较$a
,因此结果$b
(数字1000
)将等于$a
。如果要确定两个变量是否相同,而不是相等,则应使用===
而不是。不进行类型转换,并且仅在两个变量的类型相同且相等时才返回。==
===
true
==
PHP和===
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
是错误===
的,因为也比较类型。这可能是您正在寻找的运营商。