如何解决PHP8将0与空字符串进行比较,背后的逻辑是什么
在 PHP 8 中为什么将 0 与空字符串进行比较,让我感到惊讶。
我无法理解逻辑。
let data = JSON.parse(response);
for (el in data) {
el = el[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,there is a problem"
,但 PHP 令我惊讶。
你能帮我理解为什么输出是yes a equals False and b equals False
吗?
no
它应该返回 true 并且它工作正常。
但是,
if(false == false)
它也应该返回 true,但它会返回 false,即使 if("" == 0)
和 ""
是 false。 我想知道为什么???
我想要这背后的逻辑。
我使用 PHP 8.0.2
解决方法
PHP 8 存在不兼容问题。您可以在此处找到它:https://www.php.net/manual/en/migration80.incompatible.php
我建议您在比较之前先转换您的值
if (boolval($a) == boolval($b)) {
// do stuff
}
,
我认为这是因为 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!!!,有问题”
尝试版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。