PHP【 配列 】要素を比較

PHP 配列 比較

配列を使用するシステムでは、複数の配列の差分を取得する際などに 配列の比較を行うことがあります。
今回は PHP で配列を比較する方法を紹介します。

配列については以下の記事もご参照下さい。
PHP【 配列 】複数の値を保持するデータ構造
PHP【 配列 】配列にデータを追加
PHP【 配列 】配列からデータを削除
PHP【 配列 】count で要素数を取得
PHP【 配列 】配列のソート
PHP【 連想配列 】キーでデータを特定
PHP【 多次元配列 】配列の中に配列
PHP【 配列 】配列内のデータ検索

尚、本サイトでは XAMPP( ザンプ )という開発環境を使用しています。
XAMPP のインストール方法や起動方法については以下の記事をご参照下さい。
PHP【 開発環境 】XAMPP インストール
PHP【 開発環境 】XAMPP の使い方

最終更新日:2019年2月21日

目次

1.比較演算子で比較
2.array_diff で比較
3.array_intersect で比較
 

1.比較演算子で比較

 
配列の比較を行う際に使用する比較演算子には、次のようなものがあります。

== 等しい
=== 等しい( データ型及び連想配列の並び順も比較 )
!= 等しくない
!== 等しくない( データ型及び連想配列の並び順も比較 )

●要素も要素の並び順も同一の配列

$ary1 = array("red", "blue", "green");
$ary2 = array("red", "blue", "green");

この場合、$ary1 == $ary2 、$ary1 === $ary2 共に true と判定されます。

●要素は同一で並び順が違う配列

$ary1 = array("red", "blue", "green");
$ary2 = array("green", "red", "blue");

この場合、$ary1 == $ary2 、$ary1 === $ary2 共に false と判定されます。

●重複要素がある配列

$ary1 = array("red", "blue", "green");
$ary2 = array("red", "blue", "green", "red");

この場合、$ary1 == $ary2 、$ary1 === $ary2 共に false と判定されます。

●連想配列と通常配列の比較

$ary1 = array("red", "blue", "green");
$ary2 = array("R"=>"red", "B"=>"blue", "G"=>"green");

この場合、$ary1 == $ary2 、$ary1 === $ary2 共に false と判定されます。
 

$ary1 = array("red", "blue", "green");
$ary2 = array(0=>"red", 1=>"blue", 2=>"green");

この場合、$ary1 == $ary2 、$ary1 === $ary2 共に true と判定されます。
 

$ary1 = array("red", "blue", "green");
$ary2 = array(1=>"blue", 2=>"green", 0=>"red");

この場合、$ary1 == $ary2 は true、 $ary1 === $ary2 は false と判定されます。

▲目次へ戻る

 

2.array_diff で比較

 
array_diff 関数は、複数の配列を比較して 最初に指定する配列の要素で他の配列にないものを返す関数です。

array_diff 関数は、次のように記述して使用します。

array_diff ( $array1 , $array2 [ , $array3 , ・・・ ]) ;

 
下記のようなソースファイルを作成して ブラウザからアクセスすると、次のような表示になります。
( ソースファイルの作成方法についてはソースファイルを作成を、サーバの起動方法等についてはサーバを起動を、それぞれご参照下さい。)

<pre>
<?php

  $ary1 = array("red", "blue", "green");
  $ary2 = array("pink", "gray", "red");

  $val = array_diff($ary1, $ary2);

  print_r($val);

?>
</pre>
PHP 配列 比較 サンプル

$ary1 の要素で $ary2 にはない「 blue 」と「 green 」が array_diff($ary1, $ary2) の戻り値として 配列変数 $val に代入されます。

変数を介さず、「 print_r(array_diff($ary1, $ary2)); 」として 戻り値を直接出力しても同じ結果が得られます。

print_r 関数や <pre> ~ </pre> についてはprint_r で出力をご参照下さい。

▲目次へ戻る

 

3.array_intersect で比較

 
array_intersect 関数は、複数の配列を比較して 最初に指定する配列の要素で他の全配列にあるものを返す関数です。

array_intersect 関数は、次のように記述して使用します。

array_intersect ( $array1 , $array2 [ , $array3 , ・・・ ]) ;

 
下記のようなソースファイルを作成して ブラウザからアクセスすると、次のような表示になります。
( ソースファイルの作成方法についてはソースファイルを作成を、サーバの起動方法等についてはサーバを起動を、それぞれご参照下さい。)

<pre>
<?php

  $ary1 = array("red", "blue", "green");
  $ary2 = array("pink", "red", "green");
  $ary3 = array("green", "red", "gray");

  $val = array_intersect($ary1, $ary2, $ary3);

  print_r($val);

?>
</pre>
PHP 配列 比較 array_intersect サンプル

$ary1 の要素で $ary2 及び $ary3 にもある「 red 」と「 green 」が array_diff($ary1, $ary2, $ary3) の戻り値として 配列変数 $val に代入されます。

変数を介さず、「 print_r(array_intersect($ary1, $ary2, $ary3)); 」として 戻り値を直接出力しても同じ結果が得られます。

print_r 関数や <pre> ~ </pre> についてはprint_r で出力をご参照下さい。

▲目次へ戻る

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です