1. ホーム
  2. php

[解決済み] PHP の等値演算子 (== double equals) と同一値演算子 (=== triple equals) はどのように違うのでしょうか?

2022-03-18 12:31:39

質問

とはどのような違いがあるのでしょうか。 ===== ?

  • は、具体的にどのようにゆるやかに == 比較作業?
  • 具体的にどのように厳密な === 比較作業?

何か参考になる事例があれば教えてください。

どのように解決するのですか?

の違い =====

の差は、ゆるやかなものです。 == イコール演算子、および厳密には === で説明しています。 マニュアル :

比較演算子

│ 例 │ 名前 │ 結果
├──────────┼───────────┼───────────────────────────────────────────────────────────┤
│$a == $b │ Equal │ タイプジャグリングの結果、$a が $b と等しい場合に TRUE。           │
│$a === $b │ 同一 │ $a と $b が等しく、同じ型であれば真とする。
└──────────┴───────────┴───────────────────────────────────────────────────────────┘


ゆるく == たいしょう

を使用している場合 == 演算子や、その他の緩やかな比較を行う演算子、例えば != , <> または == は、常に見ておく必要があります。 文脈 を見ることで、何が、どこで、なぜ変換されるのかを理解することができます。

変換ルール

タイプ別比較表

参考・例として、比較表をご覧ください。 マニュアル :

とのゆるい比較。 ==

┌─────────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬─────────┬───────┬───────┐
│ │ TRUE │ FALSE │ 1 │ 0 │ -1 │ "1" │ "0" │ "-1" │ NULL │ array() │ "php" │ "" │ │
├─────────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼─────────┼───────┼───────┤
│ true │ true │ false │ true │ false │ true │ true │ false
│ false │ true │ false │ true │ false │ true │ false
1 │ true │ false │ true │ false │ false
0 │ false │ true │ false │ true │ false
│ -1 │ true │ false │ false │ false
│ "1" │ TRUE │ FALSE │ TRUE │ FALSE │ TRUE │ FALSE │ FALSE │ FALSE │ FALSE │ FALSE
│ "0" │ FALSE │ TRUE │ FALSE │ TRUE │ FALSE │ TRUE │ FALSE │ FALSE │ FALSE
│ "-1" │ TRUE │ FALSE │ FALSE │ TRUE │ FALSE │ FALSE │ TRUE
│ null │ true │ false │ true │ false │ true │ false
│ array() │ FALSE │ TRUE │ FALSE │ FALSE │ FALSE │ TRUE │ FALSE │ FALSE
│ "php" │ TRUE │ FALSE │ TRUE │ FALSE │ FALSE │ FALSE │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ "" │ FALSE │ TRUE │ FALSE │ TRUE │ FALSE │ FALSE │ TRUE │ FALSE │ FALSE │ TRUE
└─────────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴─────────┴───────┴───────┘


厳密には === いちごん

を使用している場合 === 演算子、または厳密な比較を使用するその他の比較演算子 !== または === そうすれば、そのような型が存在しないことを常に確認することができます。 ところてん式に 変換が行われなくなるからです。ですから、厳密な比較では、値だけでなく、型と値も同じでなければなりません。

タイプ別比較表

参考・例として、比較表をご覧ください。 マニュアル :

との厳密な比較。 ===

┌─────────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬─────────┬───────┬───────┐
│ │ TRUE │ FALSE │ 1 │ 0 │ -1 │ "1" │ "0" │ "-1" │ NULL │ array() │ "php" │ "" │ │
├─────────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼─────────┼───────┼───────┤
│ true │ false │ false │ false │ false
虚偽 │ 虚偽 │ 虚偽 │ 虚偽 │ 虚偽
1 │ 虚偽 │ 虚偽 │ 虚偽 │ 虚偽
0 │ 虚偽 │ 虚偽 │ 虚偽 │ 虚偽
│ -1 │ 虚偽 │ 虚偽 │ 虚偽 │ 虚偽
│ "1" │ FALSE │ TRUE │ FALSE │ TRUE │ FALSE │ FALSE │ TRUE
│ "0" │ FALSE │ TRUE │ FALSE │ FALSE │ FALSE
│ "-1" │ FALSE │ FALSE │ FALSE │ FALSE │ TRUE │ FALSE │ FALSE │ FALSE
null │ false │ false │ false │ false │ false
│ array() │ FALSE │ FALSE │ FALSE │ FALSE │ FALSE │ FALSE │ FALSE │ FALSE │ False
│ "php" │ FALSE │ FALSE │ FALSE │ FALSE │ FALSE │ FALSE │ FALSE │ FALSE │ FALSE
│ "" │ FALSE │ FALSE │ FALSE │ FALSE │ FALSE │ TRUE │ FALSE │ FALSE │ FALSE │ FALSE │ FALSE │ TRUE
└─────────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴─────────┴───────┴───────┘