[英]PHP - What is the difference between '!== false' and ' == true'?
[英]evaluate stripos(), what is the difference between !== FALSE and === TRUE?
我有一個字符串的問題:
$val = 'NOT NULL';
if(stripos($val, 'NULL') !== FALSE){
echo "IS $val";
}
它評估很好,但如果我使用=== TRUE
作為評估者,那么事情就出錯了。 答案躲過了我,請幫助我理解。
如果您閱讀了stripos()
的文檔,您會發現。
返回針相對於haystack字符串的beginnning存在的位置(與offset無關)。 另請注意,字符串位置從0開始,而不是1。
如果未找到針,則返回
FALSE
。
它不會返回TRUE
。 既然你使用了嚴格的平等 ,那么你的情況將永遠不會成真 。
如果你做了stripos($val, 'NULL') == TRUE
那么你的代碼會在0
位找到NULL
執行 - 因為PHP會做一些類型雜耍並且有效地0 == (int)true
。
使用stripos()
測試存在的適當方法就是你擁有的:
if (stripos($val, 'NULL') !== FALSE){
echo "IS $val";
}
答案是因為您正在使用嚴格相等運算符。 函數本身返回一個int(如果沒有找到針,則返回布爾值)。 返回值不等於(嚴格意義上,值和類型)為true,這就是檢查失敗的原因。
由於===
和!==
是嚴格的比較運算符 - !== false
與===true
,因為例如1!==false
是正確的(值和類型不相等),但是1===true
不正常(值相等,但類型不是)。
此示例表明嚴格比較的含義 - 即不僅重要的是價值,而且還有比較數據的類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.