1. ホーム
  2. php

[解決済み] PHPで!=と!==が等しくない場合

2022-03-03 10:13:18

質問

いつもこうしている if ($foo !== $bar)

しかし、私は気づいたのです。 if ($foo != $bar) も正しいです。

ダブル = はまだ動作しますし、これまでも動作していましたが、PHP の演算子で検索しても、ダブル = ということは、私はいつもこの方法を間違えていたのだと思いますが、とにかく動作します。私の !== から != ただ、そのためだけに?

解決方法は?

==!= は、比較する変数のデータ型を考慮しません。そのため、これらはすべてtrueを返すことになります。

'0'   == 0
false == 0
NULL  == false

===!== する は、データ型を考慮します。つまり、文字列とブーリアンの比較は 決して というのも、例えば両者は型が異なるからです。これらはすべてfalseを返します。

'0'   === 0
false === 0
NULL  === false

真偽があいまいな値を返す可能性がある関数は、データ型を比較する必要があります。よく知られている例としては strpos() :

// This returns 0 because F exists as the first character, but as my above example,
// 0 could mean false, so using == or != would return an incorrect result
var_dump(strpos('Foo', 'F') != false);  // bool(false)
var_dump(strpos('Foo', 'F') !== false); // bool(true), it exists so false isn't returned