首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >评估=== (),!stripos FALSE和stripos TRUE之间的区别是什么?

评估=== (),!stripos FALSE和stripos TRUE之间的区别是什么?
EN

Stack Overflow用户
提问于 2013-08-22 21:53:30
回答 3查看 535关注 0票数 4

我有一个字符串的问题:

代码语言:javascript
复制
$val = 'NOT NULL';

if(stripos($val, 'NULL') !== FALSE){
    echo "IS $val";
}

它的计算结果很好,但是如果我使用=== TRUE作为计算器,事情就会出错。答案让我摸不着头脑,请帮我理解。

EN

回答 3

Stack Overflow用户

发布于 2013-08-22 21:58:11

如果您阅读了stripos()的文档,您会发现。

返回指针所在位置相对于干草堆字符串的起始位置(与偏移量无关)。还要注意,字符串位置从0开始,而不是从1开始。

如果未找到指针,则返回FALSE

它不返回TRUE。由于您使用的是strict equality,因此您的条件永远不会为真。

如果你做了stripos($val, 'NULL') == TRUE,那么你的代码将会在0位置找到NULL的情况下执行--因为PHP会做一些类型调整并且有效地0 == (int)true

使用stripos()测试是否存在的适当方法是:

代码语言:javascript
复制
if (stripos($val, 'NULL') !== FALSE){
    echo "IS $val";
} 
票数 8
EN

Stack Overflow用户

发布于 2013-08-22 21:57:39

答案是因为您使用的是严格相等运算符。函数本身返回一个int (如果没有找到指针,则返回boolean )。返回值(严格意义上,值和类型)不等于true,这就是检查失败的原因。

票数 1
EN

Stack Overflow用户

发布于 2013-08-22 21:58:04

由于===!==strict comparison operators - !== false===true不同,例如,1!==false是ok (值和类型不相等),但1===true不是ok (值相等,但类型不相等)。

这个样本表明了严格比较的含义-即不仅价值重要,而且比较数据的类型也很重要。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18382466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档