型別比較

有兩種型別的比較 : 與 ==鬆散比較和與 ===嚴格比較。嚴格的比較可確保運算子兩側的型別和價值相同。

// Loose comparisons
var_dump(1 == 1); // true
var_dump(1 == "1"); // true
var_dump(1 == true); // true
var_dump(0 == false); // true

// Strict comparisons
var_dump(1 === 1); // true
var_dump(1 === "1"); // false
var_dump(1 === true); // false
var_dump(0 === false); // false

// Notable exception: NAN — it never is equal to anything
var_dump(NAN == NAN); // false
var_dump(NAN === NAN); // false

你還可以使用強比較來檢查型別和值是否!== 匹配。

== 運算子不夠的典型示例是可以返回不同型別的函式,如 strpos ,如果找不到 searchword 則返回 false,否則返回匹配位置(int):

if(strpos('text', 'searchword') == false)
  // strpos returns false, so == comparison works as expected here, BUT:
if(strpos('text bla', 'text') == false)
  // strpos returns 0 (found match at position 0) and 0==false is true.
  // This is probably not what you expect!
if(strpos('text','text') === false)
  // strpos returns 0, and 0===false is false, so this works as expected.