PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPの配列演算子とは?結合・比較・同一性チェックの使い方を徹底解説

はじめに

PHPでは、配列型のデータに対して使用できる専用の演算子(記号)が複数定義されています。これらの演算子を活用することで、配列同士の結合比較をシンプルなコードで実現できます。

本記事では、PHPで使える配列演算子の一覧と、それぞれの具体的な使い方をサンプルコード付きで解説します。

PHPの配列演算子一覧

PHPで定義されている主な配列演算子は以下の通りです。

記号使用例名称結果
+$a + $b結合(Union)$a と $b を結合した配列を返す
==$a == $b等価(Equality)$a と $b が同じキー/値のペアを持つ場合に TRUE
===$a === $b同一(Identity)$a と $b が同じキー/値のペアを、同じ順序・同じ型で持つ場合に TRUE
!=$a != $b不等価(Inequality)$a が $b と等しくない場合に TRUE
<>$a <> $b不等価(Inequality)$a が $b と等しくない場合に TRUE(!= と同じ意味)
!==$a !== $b非同一(Non-identity)$a が $b と同一でない場合に TRUE

配列の結合(+ 演算子)

+ 演算子は、右側の配列を左側の配列に追加します。ただし注意点として、同じキーが両方の配列に存在する場合は、左側の配列の要素が優先され、右側の対応する要素は無視されます

以下の例では、キーが重複しない2つの連想配列を + 演算子で結合しています。

コード例

<?php
$arr1 = array("phy" => 70, "che" => 80, "math" => 90);
$arr2 = array("Eng" => 70, "Bio" => 80, "CompSci" => 90);
$arr3 = $arr1 + $arr2;
var_dump($arr3);
?>

出力結果

array(6) {
["phy"]=>
int(70)
["che"]=>
int(80)
["math"]=>
int(90)
["Eng"]=>
int(70)
["Bio"]=>
int(80)
["CompSci"]=>
int(90)
}

このように、$arr1 の3要素と $arr2 の3要素がすべて保持され、合計6要素の配列が生成されました。

配列の比較(== および != 演算子)

== 演算子による「等しい」の判定基準は、キーと値のペアが一致していることです。要素の出現順序は問われません。

次の例では、一方は明示的にキーを指定した連想配列、もう一方は通常のインデックス配列ですが、キーと値の組み合わせが一致しているため、両者は「等しい」と判断されます。

コード例

<?php
$arr1 = array(0 => 70, 2 => 80, 1 => 90);
$arr2 = array(70, 90, 80);
var_dump($arr1 == $arr2);
var_dump($arr2 != $arr1);
?>

出力結果

bool(true)
bool(false)

$arr1 は「キー0→70、キー1→90、キー2→80」、$arr2 も自動採番により「キー0→70、キー1→90、キー2→80」となるため、== の比較結果は true になります。そのため、!= の結果は false となります。

同一性の判定(=== および !== 演算子)

=== 演算子による「同一」の判定はより厳密で、同じキーと値のペアを、まったく同じ順序で、同じ型として持っている場合に限り true を返します。

コード例

<?php
$arr1 = array(0 => 70, 1 => 80, 2 => 90);
$arr2 = array(70, 90, 80);
var_dump($arr1 === $arr2);
$arr3 = [70, 80, 90];
var_dump($arr3 === $arr1);
?>

出力結果

bool(false)
bool(true)

$arr2 は「キー1→90、キー2→80」となり、$arr1 の値の並び(80、90)と異なるため、=== の比較結果は false です。一方、$arr3 は $arr1 とキー・値・順序すべてが一致しているため、true が返されます。

まとめ

  • + 演算子:配列を結合する。キーが重複する場合は左側の配列が優先される。
  • == / != 演算子:キーと値のペアが一致していれば等しいとみなす(順序は不問)。
  • === / !== 演算子:キー・値・順序・型まで完全に一致している必要がある。

特に == と === の違いはバグの原因になりやすいポイントなので、用途に応じて適切な演算子を選択しましょう。

  1. PHPのlocaltime()関数の使い方と実行例をわかりやすく解説

    PHPのlocaltime()関数は、Unixタイムスタンプに含まれる時刻の各要素(秒・分・時・日付など)を配列として取得できる関数です。第2引数の指定方法によって、数値インデックスの配列、あるいは扱いやすい連想配列のどちらの形式でも結果を受け取ることができます。 構文 localtime(timestamp, is_associative) パラメータ timestamp − 整数型のUnixタイムスタンプを指定します。省略した場合は現在のローカル時刻、つまりtime()の戻り値がデフォルトで使用されます。 is_associative − FALSEを指定するか省略した場合、結果は通

  2. PHPのarray()関数とは?配列の作成方法をわかりやすく解説

    PHPのarray()関数は、配列を作成するための関数です。PHPにおける配列には、主に以下の3種類が存在します。インデックス配列 − 数値インデックス(0から始まる番号)で要素を管理する配列連想配列 − 文字列などの名前付きキーで要素を管理する配列多次元配列 − 配列の中に1つ以上の配列を含む、入れ子構造の配列構文// 数値インデックスを持つ配列(インデックス配列) array(value1, value2, ...); // 名前付きキーを持つ配列(連想配列) array(key1 => value1, key2 => value2, ...)パラメータvalue − 配列に