重複の可能性:
等値 (== 二重等号) と同一性 (=== 三重等号) の比較演算子はどのように異なりますか?
参考 - この記号はPHPで何を意味しますか?
php が != および !== と等しくない
このコード スニペットの!==
and演算子は何ですか?===
if ( $a !== null ) // do something
if ( $b === $a ) // do something
重複の可能性:
等値 (== 二重等号) と同一性 (=== 三重等号) の比較演算子はどのように異なりますか?
参考 - この記号はPHPで何を意味しますか?
php が != および !== と等しくない
このコード スニペットの!==
and演算子は何ですか?===
if ( $a !== null ) // do something
if ( $b === $a ) // do something
それらは恒等等価演算子です。
1 == 1
1 == "1"
1 === 1
1 !== "1"
true === true
true !== "true"
true == "true"
これらはすべて true に相当します。@mbeckish が提供するこのリンクも確認してください
これらは厳密な型比較演算子です。値だけでなく型もチェックします。
数値または文字列を比較するときの状況を考えてみましょう:
if (4 === 4) // same value and type
{
// true
}
しかし
if (4 == "4") // same value and different type but == used
{
// true
}
と
if (4 === "4") // same value but different type
{
// false
}
これはオブジェクトだけでなく配列にも当てはまります。
したがって、上記の場合、使用するか、使用するかを賢明に選択する必要があります==
。===
===
型もはっきりしている場合に使うとよいでしょう。
より詳しい情報:
=== は、変数の型もチェックします。
たとえば、"1" == 1
true を返しますが、"1" === 1
false を返します。これは、0 または False を返す関数 (strpos など) に特に役立ちます。
strpos は 0 および 0 == false を返すため、これは正しく機能しません。
if (strpos('hello', 'hello world!'))
ただし、これは機能します。
if (strpos('hello', 'hello world!') !== false)
ダブル = 記号は比較であり、左側の変数 / 式 / 定数が右側の変数 / 式 / 定数と同じ値を持つかどうかをテストします。
トリプル = 記号は、2 つの変数 / 式 / 定数が等しいかどうか、および同じ型を持っているかどうかを確認するための比較です。つまり、両方が文字列であるか、両方が整数であるかを確認します。
同じ概念が !== にも適用されます
指定された値の型と値の両方が等しい場合にのみ、true を返します。例: 1 === 1 が真 "1" === 1 が偽 1 === "1" が偽 "1" === "1" が真
== と同様に、上記のすべてが真になります
2 つの等号を使用する==
と、同じ値をチェックします。
if( '1' == 1 ) { echo 'yes'; }
上記のコードは、同じ値を持っているため機能します。
ただし、等号を 3 つ使用する===
と、値とデータ型がチェックされます。
したがって
if( '1' === 1 ) { /* this will not work */ }
これは、 whileがor の'1'
データ型を持っているためです。string
1
integer
number
しかし、あなたはこのようなことをすることができます-私は思います:D
if( (integer) '1' === 1 ) { echo 'this works'; }
のデータ型'1'
をinteger