首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP8将0与空字符串进行比较,这背后的逻辑是什么

PHP8将0与空字符串进行比较,这背后的逻辑是什么
EN

Stack Overflow用户
提问于 2021-03-02 11:06:39
回答 2查看 1K关注 0票数 0

在PHP 8中,为什么要将0与空字符串进行比较,这让我感到惊讶。

我不明白逻辑。

代码语言:javascript
复制
$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

EN

回答 2

Stack Overflow用户

发布于 2021-03-02 11:19:51

PHP 8中有一个不兼容的地方。

我建议你在比较之前先投下你的价值观。

代码语言:javascript
复制
if (boolval($a) == boolval($b)) {
   // do stuff 
}
票数 1
EN

Stack Overflow用户

发布于 2021-03-02 11:21:03

我认为这是因为PHP8。

我试试这段代码

代码语言:javascript
复制
 $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在线沙箱中尝试它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66438174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档