评估stripos(),有什么区别!== FALSE和=== TRUE?

der*_*rei 4 php evaluate stripos

我有一个字符串的问题:

$val = 'NOT NULL';

if(stripos($val, 'NULL') !== FALSE){
    echo "IS $val";
}
Run Code Online (Sandbox Code Playgroud)

它评估很好,但如果我=== TRUE用作评估者,那么事情就会出错.答案躲过了我,请帮助我理解.

Jas*_*ary 7

如果你阅读了文档,stripos()你会发现.

返回针相对于haystack字符串的beginnning存在的位置(与offset无关).另请注意,字符串位置从0开始,而不是1.

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

它不会回来TRUE.既然你使用了严格的平等,那么你的情况将永远不会成.

如果你这样做了,stripos($val, 'NULL') == TRUE那么如果NULL在位置找到你的代码就会执行0- 因为PHP会做一些类型 - 玩杂耍并且有效0 == (int)true.

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

if (stripos($val, 'NULL') !== FALSE){
    echo "IS $val";
} 
Run Code Online (Sandbox Code Playgroud)