如何解决空字符串与零的比较在 PHP 8 中给出的结果与以前的版本不同
这段代码在 PHP 8 中给出的结果与所有以前版本的 PHP 不同:
if ('' == 0)
echo 'PHP '.phpversion().' says yes';
else
echo 'PHP '.phpversion().' says no';
PHP 7.2.12 says yes
PHP 7.4.14 says yes
PHP 8.0.0 says no
这似乎是一个重大变化。这是怎么回事?
解决方法
你说得对,这是一个重大变化。
与任何版本升级一样,您可以在 PHP 官方手册中找到 a guide to Migrating to PHP 8.0。如果您点击 Backward Incompatible Changes,您将看到此更改是该页面上的第一件事:
数字和非数字字符串之间的非严格比较现在通过将数字转换为字符串并比较字符串来工作。
除了下一句中的示例外,还有一个前后对比表,其中包含您给出的确切示例:
比较:0 == ""
;之前:true
;之后:false
如果您的代码依赖于旧行为,则需要更新它以更明确地说明预期值。例如,以下所有内容都适用于所有版本的 PHP:
if ( $value === 0 || $value === "" ) { ... }
if ( (string)$zero === "" ) { ... }
if ( (int)$emptyString === 0 ) { ... }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。