在下面的代码中,我希望if
条件为真,但实际上else
条件为真。谁能解释一下背后的原因?
$a = (float) 0;
$b = 0;
if ($b === $a) {
echo "$a and $b are equal";
}
else{
echo "$a and $b are not equal"; // true
}
else
部分是true
的,因为当你尝试使用===
时int(0)
和float(0)
不相等,如果你尝试使用==
,if
部分将为真。使用var_dump($a)
或var_dump($b)
查看其数据类型
===
不仅比较值相等,而且还确保条目的类型相同
<?php
$a = (float) 0;
$b = 0;
var_dump($a);
var_dump($b);
if($b === $a){
echo "$a and $b are equal";
}else{
echo "$a and $b are not equal"; // true
}
?>
> === 检查值(0 & 0(和类型(int & float(是否相等。在这种情况下,它们不是。
如果您只想检查值而不检查类型,请使用 ==