php - stripos 在数字比较时返回 false
问题描述
我创建了一个通用函数来检查给定的字符串是否存在于字符串中。除非我遇到这个问题,否则该功能工作正常。问题是如果我将 find 和 string 都传递给 3 即 int 那么它返回 false。我相信它应该返回 true。我在php官方网站上阅读并发现了这一点:
如果 needle 不是字符串,则将其转换为整数并用作字符的序数值。
有没有办法解决这个问题。
我的功能如下:
private static function compareValue($string, $find) {
if (strpos($find, '!') === 0) {
//removing first ! for comparison
$find = substr($find, 1);
//comparison will be like not equals to
return !(stripos($string, $find) !== false);
} else {
return (stripos($string, $find) !== false);
}
}
编辑
如果是这样的调用函数,self::compareValue(3,3)
那么它应该返回true而不是false。
解决方案
您可以自己转换为字符串:
(string)$find
随意添加任何对您有意义的检查,因为盲目施法不是一个好主意:
$find = true;
var_dump((string)$find);
string(1) "1"
推荐阅读
- reactjs - 使用 Navbar 将传递状态反应给孩子
- laravel-5 - 如何借助 laravel 中的模型播种多个类别数据
- python - 初始化后调整 matplotlib 图形的大小
- python - Django csrf 令牌正在修改预期输出并导致单元测试失败
- java - 在 Java 枚举中使用某种范围
- node.js - 在 NPM 包中包含外部 node_module 类型
- html - CSS [attribute="value"] 选择器是不必要的吗?
- three.js - 三.js:显示.obj文件中每个顶点的索引号
- javascript - Django 模板。API 请求导致页面导航到查询 url
- oracle - 混淆解密错误代码 Python 模块以连接到 Oracle (cx_Oracle)