亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP 和使用 strcmp 函數的正確方法

PHP 和使用 strcmp 函數的正確方法

PHP
富國滬深 2023-04-21 13:37:18
我正在處理以下代碼段。!== 0在第一個 if 條件中使用而即使第二個條件在不使用的情況下返回相同的結果有什么意義!== 0?我正在關注一些在線教程并注意到大多數開發人員都在使用,!== 0但我無意中注意到我也得到了相同的結果,至少在這個特定示例中沒有使用!== 0<?php   $name1 = "Geeks"; $name2 = "geeks";   if (strcmp($name1, $name2) !== 0) {     echo 'Strings are not equal'; } else {     echo 'Strings are equal'; } if (strcmp($name1, $name2)) {     echo 'Strings are not equal'; } else {     echo 'Strings are equal'; } ?> 
查看完整描述

1 回答

?
當年話下

TA貢獻1890條經驗 獲得超9個贊

“===”和“!==”比較運算符斷言兩件事:

  1. 值相等,并且

  2. 這些值屬于同一類型

對您的問題“將 !== 與 strcmp 函數一起使用有什么意義”的簡短回答只是“這是一種很好的做法”。這確實是具體關于 strcmp 的唯一原因,并且 != 在涉及該功能時會給您完全相同的結果。

長答案如下:

PHP 傳統上是一種松散類型的語言。也就是說,數據類型并不是那么重要,PHP 會自動為您隱式轉換類型。默認情況下它仍然這樣做(盡管近年來已經添加了很多東西來改善這種情況)。例如,如果將字符串“1”添加到整數 1,PHP 會自動將字符串轉換為整數并返回整數值 2。如果您嘗試這樣做,強類型語言將返回錯誤。另一個例子是 PHP 會將 0 轉換為布爾值 false,并將任何其他非零值轉換為布爾值 true。

正是第二個示例導致某些 PHP 內置函數出現問題。例如,strpos() 函數。如果您查看strpos 的文檔頁面,您會在“返回值”部分看到一個很大的“警告”,指出“此函數可能返回布爾值 FALSE,但也可能返回一個計算結果為 FALSE 的非布爾值”。出于這個原因,它建議您使用“===”運算符來確保您獲得了您期望的準確值和類型。所以“=== 0”表示在輸入的開頭找到了字符串,“=== false”表示沒有找到字符串。如果你只是使用“== false”你就不會

因此,開發人員養成了使用“===”和“!==”來測試相等性和類型的習慣。這是一個好習慣。

由于 strcmp 總是返回一個整數,并且您總是將它與一個整數進行比較,因此沒有隱式轉換,因此不需要比較類型和相等性。


查看完整回答
反對 回復 2023-04-21
  • 1 回答
  • 0 關注
  • 139 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號