PHP の==と===の比較演算子の違い

Subodh Poudel 2023年1月30日
  1. 整数値と浮動小数点値を PHP のダブル(==)とトリプル(===)の等号比較演算子と比較する
  2. PHP の整数値とブール値をダブル(==)およびトリプル(===)の等号比較演算子と比較する
  3. 整数値と文字列値を Double および TripleEquals 比較演算子で比較する
PHP の==と===の比較演算子の違い

この記事では、PHP の二重等号 == と三重等号 === の比較演算子の違いを紹介します。大きな違いは、doubleequals 比較演算子が 2つのオペランドの値を比較することです。対照的に、トリプルイコール比較演算子は、オペランドの値とタイプを比較します。

整数と浮動小数点値を比較することにより、二重等号と三重等号の比較演算子を区別する方法を紹介します。条件文として三項演算子を使用します。

2 番目の方法では、doubleequals および tripleequals 比較演算子を整数およびブール値と比較します。この方法では、三項演算子も使用します。

また、doubleequals と tripleequals 比較演算子を使用した整数値と文字列の比較についても説明します。var_dump() 関数を使用して、このメソッドで比較をダンプします。

整数値と浮動小数点値を PHP のダブル(==)とトリプル(===)の等号比較演算子と比較する

比較演算子を使用して、異なるタイプの 2つの同じ値を比較できます。このメソッドは、同じ値を持つ整数と浮動小数点を比較します。三項演算子を使用してオペランドを比較し、var_dump() 関数を使用してブール値をダンプできます。

たとえば、変数 $a を作成し、その中に整数値 5 を格納します。浮動小数点値 5.0 を別の変数 $b に格納します。三項演算子を使用して、2つの変数を三重比較演算子と比較します。三項演算子では、真の値は true を返し、偽の値は false を返します。操作を $c 変数に格納します。同様に、double equals 演算子を使用した 2つの変数を三項演算子と比較し、その操作を $d 変数に格納します。$c 変数と $d 変数の両方で var_dump() 関数を使用します。

コード例の出力は、トリプルイコール演算子の場合は false 値を返し、ダブルイコール演算子の場合は true 値を返します。値は同じですが、値 5 は整数型であり、値 5.0 は浮動小数点型です。したがって、トリプルイコール演算子は偽の値を返し、ダブル演算子は真の値を返します。

サンプルコード:

#php 7.x 
<?php
$a = 5; 
$b = 5.0; 
$c = $a===$b ? true : false;
$d = $a==$b ? true : false;
var_dump($c);
var_dump($d);
?>

出力:

bool(false) bool(true)

PHP の整数値とブール値をダブル(==)およびトリプル(===)の等号比較演算子と比較する

このメソッドは、整数値 1 とブール値 true を比較します。整数値 1 は真理値を示します。最初の方法と同じように、三項演算子を使用できます。たとえば、整数値 1 を変数 $a に格納します。別の変数 $b を作成し、ブール値 true をその変数に格納します。最初の方法と同様に、三項演算子を使用してこれら 2つの変数を比較します。変数を doubleequals と tripleequals の両方の比較演算子で比較します。結果を変数 $c および $d に保存し、var_dump() 関数を使用してこれらの変数をダンプします。

$c 変数は偽の値を返し、$d 値は真の値を返します。トリプルイコール演算子はオペランドのタイプを比較するため、1true のタイプが一致しないことは明らかです。ただし、値 1 は真の値であるため、その値は true ブール値と同じです。

サンプルコード:

#php 7.x 
<?php
$a = 1; 
$b = true; 
$c = $a===$b ? true : false;
$d = $a==$b ? true : false;
var_dump($c);
var_dump($d);
?>

出力:

bool(false) bool(true)

整数値と文字列値を Double および TripleEquals 比較演算子で比較する

var_dump() 関数でオペランドを直接比較して、比較の結果を確認できます。このメソッドは、三項演算子を使用するメソッドの簡略化されたメソッドです。次の図では、トリプルイコールとダブルイコールの比較演算子を使用して、整数値と文字列値を比較しています。

たとえば、変数 $a を作成し、その中に整数値 5 を格納します。文字列値 5 を別の変数 $b に格納します。最初にトリプルイコール比較演算子を使用して、次にダブルイコール演算子を使用して、これら 2つの変数を比較します。これらの比較を var_dump() 関数内にラップします。

最初の比較では、誤った値になります。2 番目の比較では、真理値が返されます。2つの変数のタイプが一致しないため、誤った値になります。文字列値 5 は整数値に型キャストされ、両方の変数の値は同じになります。ただし、変数のタイプは変更されません。

サンプルコード:

#php 7.x 
<?php
$a = 5; 
$b = '5';
var_dump($a===$b);
var_dump($a==$b);
?>

出力:

bool(false) bool(true)
著者: Subodh Poudel
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn

関連記事 - PHP Operator