PHPで2つの配列を照合(比較)するための関数

◎準備:比較用のサンプル配列
 $array_a = [‘a’ => ‘apple’, ‘b’ => ‘banana’, ‘c’ => ‘cherry’];
 $array_b = [‘a’ => ‘apple’, ‘b’ => ‘blueberries’, ‘d’ => ‘date’];

1. 値の差異を確認する(差分抽出)
 $array_a にのみ存在する「値」を抽出
 ◆array_diff($array1, $array2)
   $array1 にあって $array2 にはない「値」を返す。
    $diff_values = array_diff($array_a, $array_b);
    結果: [‘b’ => ‘banana’, ‘c’ => ‘cherry’]

 キーと値の両方が一致しないものを抽出
 ◆array_diff_assoc($array1, $array2)
   値だけでなく 「キー」 も含めて比較し、差分を返す。
    $diff_assoc = array_diff_assoc($array_a, $array_b);
    結果: [‘b’ => ‘banana’, ‘c’ => ‘cherry’] (bは値が違うため抽出される)

2. 共通する要素を確認する(積集合)
 両方の配列に存在する要素を探す場合に使用。
 ◆array_intersect($array1, $array2)
   $intersect_values = array_intersect($array_a, $array_b);
   // 結果: [‘a’ => ‘apple’]

 キーと値の両方が一致するものを抽出
 ◆array_intersect($array1, $array2)
   $intersect_assoc = array_intersect_assoc($array_a, $array_b);
   // 結果: [‘a’ => ‘apple’]

3. 全く同じかどうかを確認する(一致判定)
 $list1 = [1, 2, 3];
 $list2 = [‘1’, ‘2’, ‘3’];

 ゆるい比較(順序が同じで、値が同等ならtrue)
  $is_equal = ($list1 == $list2); // true

 厳密な比較(順序、型、値すべてが一致ならtrue)
  $is_identical = ($list1 === $list2); // false (型が違うため)

 連想配列の順序を無視して中身が同じか判定したい場合
  $arr1 = [‘x’ => 1, ‘y’ => 2];
  $arr2 = [‘y’ => 2, ‘x’ => 1];

  $arr1 == $arr2 は true / $arr1 === $arr2 は false

 2つの配列の内容が同一かどうかを判定する場合。
 ◆== 演算子: キーと値のペアが等しいか(順序は問わない)。
 ◆=== 演算子: キー、値、および 「順序と型」 まで完全に一致するか。

Previous article

fail2banで不正アクセス対策