理解 strpos() 的返回值怪癖
当使用 strpos() 查找给定字符串中的子字符串时,考虑这一点至关重要返回值的影响。否则可能会导致意外结果。
问题:
尝试识别两个子字符串的起始位置并确保第一个子字符串位于第二个子字符串之前,程序员遇到意外行为。代码使用松散相等比较运算符 (<>) 检查目标字符串中是否存在每个子字符串。如果strpos()的返回值为false,则意味着没有找到子字符串。然而,当子字符串从位置 0 开始时,strpos() 似乎返回 0,这被错误地解释为 false。
解决方案:
PHP 手册明确指出指出 strpos() 可以返回布尔值 FALSE 或计算结果为 FALSE 的非布尔值(例如 0)。为了避免这种混乱,PHP 建议使用 === 运算符(严格相等)来测试 strpos() 的返回值。
在提供的示例中,程序员应该替换松散的相等运算符( ;) 在 strpos() 检查中使用严格相等运算符 (!==)。这将确保比较按预期进行,正确识别目标字符串中是否存在子字符串。
以上是为什么 `strpos()` 返回 0,以及如何可靠地检查子字符串是否存在?的详细内容。更多信息请关注PHP中文网其他相关文章!