首頁 > 後端開發 > php教程 > 為什麼 `strpos()` 回傳 0,以及如何可靠地檢查子字串是否存在?

為什麼 `strpos()` 回傳 0,以及如何可靠地檢查子字串是否存在?

Linda Hamilton
發布: 2024-12-13 06:09:09
原創
339 人瀏覽過

Why Does `strpos()` Return 0, and How Can I Reliably Check for Substring Existence?

理解strpos() 的回傳值怪癖

當使用strpos() 找出給定字串中的子字串時,請考慮這一點至關重要返回值的影響。否則可能會導致意外結果。

問題:

嘗試識別兩個子字串的起始位置並確保第一個子字串位於第二個子字串之前,程式設計師遇到意外行為。程式碼使用鬆散相等比較運算子 () 檢查目標字串中是否存在每個子字串。如果strpos()的回傳值為false,則表示沒有找到子字串。然而,當子字串從位置 0 開始時,strpos() 似乎傳回 0,這被錯誤地解釋為 false。

解:

PHP 手冊明確指出 strpos() 可以傳回布林值 FALSE 或計算結果為 FALSE 的非布林值(例如 0)。為了避免這種混亂,PHP 建議使用 === 運算子(嚴格相等)來測試 strpos() 的回傳值。

在提供的範例中,程式設計師應該取代鬆散的相等運算子( ;) 在 strpos() 檢查中使用嚴格相等運算子 (!==)。這將確保比較按預期進行,正確識別目標字串中是否存在子字串。

以上是為什麼 `strpos()` 回傳 0,以及如何可靠地檢查子字串是否存在?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板