理解strpos() 的回傳值怪癖
當使用strpos() 找出給定字串中的子字串時,請考慮這一點至關重要返回值的影響。否則可能會導致意外結果。
問題:
嘗試識別兩個子字串的起始位置並確保第一個子字串位於第二個子字串之前,程式設計師遇到意外行為。程式碼使用鬆散相等比較運算子 () 檢查目標字串中是否存在每個子字串。如果strpos()的回傳值為false,則表示沒有找到子字串。然而,當子字串從位置 0 開始時,strpos() 似乎傳回 0,這被錯誤地解釋為 false。
解:
PHP 手冊明確指出 strpos() 可以傳回布林值 FALSE 或計算結果為 FALSE 的非布林值(例如 0)。為了避免這種混亂,PHP 建議使用 === 運算子(嚴格相等)來測試 strpos() 的回傳值。
在提供的範例中,程式設計師應該取代鬆散的相等運算子( ;) 在 strpos() 檢查中使用嚴格相等運算子 (!==)。這將確保比較按預期進行,正確識別目標字串中是否存在子字串。
以上是為什麼 `strpos()` 回傳 0,以及如何可靠地檢查子字串是否存在?的詳細內容。更多資訊請關注PHP中文網其他相關文章!