在PHP 8中,为什么要将0与空字符串进行比较,这让我感到惊讶。
我不明白逻辑。
$a = 0;
$b = "";
echo ($a == false) ? "yes a is False<br>" : "no<br>";
echo ($b == false) ? "yes b is False<br>" : "no<br>";
echo ($a == $b) ? "yes a equals False and b equals to False" : "no, False is not equal to False!!!, there is a problem";输出为"no, False is not equal to False!!!, there is a problem"
在上面的代码中,我希望给出yes a equals False and b equals False,但是PHP让我感到惊讶。
你能帮我理解为什么输出是no吗?
if(false == false),它应该返回true,它工作得很好。
但,
if("" == 0)它也应该返回true,但是它将返回false,甚至""和0都是false。我想知道为什么?
我要这背后的逻辑。
我使用PHP8.0.2
发布于 2021-03-02 11:19:51
PHP 8中有一个不兼容的地方。
我建议你在比较之前先投下你的价值观。
if (boolval($a) == boolval($b)) {
// do stuff
}发布于 2021-03-02 11:21:03
我认为这是因为PHP8。
我试试这段代码
$a = 0;
$b = "";
$result = ($a == $b) ? "yes a equals False and b equals to False" : "no, False is not equal to False!!!, there is a problem";
echo($result);在PHP5和PHP7中,它的返回“是a等于False,b等于False”,但在PHP8中,它的返回“不,False不等于False!,存在一个问题”。
您可以在PHP在线沙箱中尝试它。
https://stackoverflow.com/questions/66438174
复制相似问题