PHP 对 0 和字符串的令人惊讶的比较
PHP 将 0 评估为等于字符串源于其比较运算符的行为。当使用 == 进行比较时,PHP 会将数据类型转换为兼容的。在本例中,0(整数)被转换为字符串,允许它与字符串“e”进行比较。
但是,当价格显式设置为 0 时,这种行为会变得不一致。评估不稳定可以归因于 == 和 === 之间的细微差别。 == 执行类型转换,而 === 检查严格相等,包括数据类型。
使用 === 可确保比较基于实际数据值,包括其类型。在提供的代码中,当价格设置为 0 时,将 == 替换为 === 将正确计算 0 不等于 'e'。
PHP 版本更改注意事项:
在 PHP 8 中,比较行为发生了变化。当比较数字字符串与数字时,PHP 现在使用数字比较。否则,PHP 在进行比较之前会将数字转换为字符串。
示例代码 ===:
$item['price'] = 0; /* Code to get item information goes in here */ if($item['price'] === 'e') { $item['price'] = -1; }
通过此更正,代码将准确确定是否价格为 0 或交换“e”,确保正确处理商品定价。
以上是为什么 PHP 的 == 运算符在比较 0 和字符串时会产生意外结果?的详细内容。更多信息请关注PHP中文网其他相关文章!