类型比较

有两种类型的比较 : 与 ==松散比较和与 ===严格比较。严格的比较可确保运算符两侧的类型和价值相同。

// 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.