1 回答

TA貢獻1890條經驗 獲得超9個贊
“===”和“!==”比較運算符斷言兩件事:
值相等,并且
這些值屬于同一類型
對您的問題“將 !== 與 strcmp 函數一起使用有什么意義”的簡短回答只是“這是一種很好的做法”。這確實是具體關于 strcmp 的唯一原因,并且 != 在涉及該功能時會給您完全相同的結果。
長答案如下:
PHP 傳統上是一種松散類型的語言。也就是說,數據類型并不是那么重要,PHP 會自動為您隱式轉換類型。默認情況下它仍然這樣做(盡管近年來已經添加了很多東西來改善這種情況)。例如,如果將字符串“1”添加到整數 1,PHP 會自動將字符串轉換為整數并返回整數值 2。如果您嘗試這樣做,強類型語言將返回錯誤。另一個例子是 PHP 會將 0 轉換為布爾值 false,并將任何其他非零值轉換為布爾值 true。
正是第二個示例導致某些 PHP 內置函數出現問題。例如,strpos() 函數。如果您查看strpos 的文檔頁面,您會在“返回值”部分看到一個很大的“警告”,指出“此函數可能返回布爾值 FALSE,但也可能返回一個計算結果為 FALSE 的非布爾值”。出于這個原因,它建議您使用“===”運算符來確保您獲得了您期望的準確值和類型。所以“=== 0”表示在輸入的開頭找到了字符串,“=== false”表示沒有找到字符串。如果你只是使用“== false”你就不會
因此,開發人員養成了使用“===”和“!==”來測試相等性和類型的習慣。這是一個好習慣。
由于 strcmp 總是返回一個整數,并且您總是將它與一個整數進行比較,因此沒有隱式轉換,因此不需要比較類型和相等性。
- 1 回答
- 0 關注
- 139 瀏覽
添加回答
舉報