【发布时间】:2013-08-22 13:53:30
【问题描述】:
我对字符串有这个问题:
$val = 'NOT NULL';
if(stripos($val, 'NULL') !== FALSE){
echo "IS $val";
}
它的评估结果很好,但如果我使用=== TRUE 作为评估者,事情就会出错。
答案不明白,请帮我理解。
【问题讨论】:
-
===是严格比较,即也匹配类型。由于stripos返回整数和整数 !== booleanstripos(...) === true计算结果为false。 -
谢谢!确实,现在很明显......但由于某种原因,我陷入了错误的逻辑。
-
在 php 中,整数也被视为布尔值,在
strpos和stipos的情况下,它返回整数(字符串偏移量也以 0 开头)。而===是严格比较,即0不等于false和1 or more不等于true。 -
@punk ,我明白了……这很棘手。所以,如果我使用
==,只要偏移量>0,我会得到TRUE,但如果偏移量=0,我会得到一个误导性的FALSE。现在很清楚,只有与严格的FALSE比较,我才能得到真实的结果。