在下面的代码中,我希望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
}
答案 0 :(得分:0)
===检查值(0& 0)和type(int& float)是否相等。 在这种情况下,他们不是。
如果您只想检查值而不是类型,请使用==
答案 1 :(得分:0)
else
部分为true
因为int(0)
和float(0)
在您尝试===
时不相等,if
部分将是如果您尝试使用==
,则为true。通过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
}
?>