PHPのarray_diff関数の使い方!配列の差を確認する

PHPのarray_diff関数は、複数の配列の差を計算し、最初の配列に存在し、他の配列には存在しない要素を返します。
この関数を使うと、複数の配列の差分を簡単に取得できます。

例えば、データベースの更新前後のデータを比較したり、複数のリストから特定の要素を除外したりする場合に便利です。

array_diff関数の基本的な使い方

array_diff関数は、複数の配列の差を計算し、最初の配列に存在し、他の配列には存在しない要素を返します。
基本的な構文は以下のとおりです。

array_diff(array $array1, array ...$arrays): array
  • $array1: 比較元の配列。
    • 任意の型の値を要素とする配列を指定します。
  • $arrays: 比較対象の配列(複数指定可能)。
    • 任意の型の値を要素とする配列を複数指定できます。

array_diff関数の戻り値

array_diff関数の戻り値は、最初の配列に存在し、他の配列には存在しない要素を含む配列です。
すべての要素が他の配列に存在する場合、空の配列を返します。

2つの配列の差を確認する

array_diff関数を使って、2つの配列の差を確認します。

<?php
$array1 = ['apple', 'banana', 'orange', 'grape'];
$array2 = ['banana', 'orange', 'kiwi'];

$result = array_diff($array1, $array2);

print_r($result);
// 結果:Array ( [0] => apple [3] => grape )
?>

最初に、2つの配列$array1$array2を定義しています。

その次の処理でarray_diff関数を使って、$array1$array2の差を確認しています。
$array1に存在し、$array2には存在しない要素はapplegrapeなので、これらの要素が返されます。

$array2には「kiwi」も存在しますが、比較元の配列ではないため無視されます。

3つ以上の配列の差を確認する

次にarray_diff関数を使って、3つの配列の差を確認します。

<?php
$array1 = ['apple', 'banana', 'orange', 'grape'];
$array2 = ['banana', 'orange', 'kiwi'];
$array3 = ['orange', 'grape', 'melon'];

$result = array_diff($array1, $array2, $array3);

print_r($result);
// 結果:Array ( [0] => apple )
?>

array_diff関数を使って、$array1$array2$array3の差を確認しています。
$array1に存在し、$array2$array3には存在しない要素はappleのみなので、appleが返されます。

このように比較元にあって、複数の比較対象に存在しない値のみ、配列として返ってきます。

連想配列でキーが違う場合は?

連想配列でキーが違う場合でも、値のみを比較します。

<?php
$array1 = ['apple' => 'red', 'banana' => 'yellow', 'orange' => 'orange'];
$array2 = ['grape' => 'red', 'kiwi' => 'yellow', 'melon' => 'green'];

$result = array_diff($array1, $array2);

print_r($result);
// 結果:Array ( [orange] => orange )
?>

$array1$array2という連想配列を作成しました。
そのあとに、array_diff関数で比較しています。

それぞれキーが違いますが、連想配列の場合はキーを無視して値のみを比較します。
この例では、$array1の「orange」の値である「orange」は、$array2には存在しないため、結果の配列に含まれます。

array_diff関数を使うメリット

array_diff関数を使う主なメリットは以下のとおりです。

  • 複数の配列の差分を簡単に取得: 複数の配列の差分を簡単に取得できます。
  • コードの簡潔化: ループ処理を記述する必要がなく、コードが簡潔になります。
  • 可読性の向上: コードの意図が明確になり、可読性が向上します。

PHPのarray_diff関数の使い方まとめ

今回はPHPのarray_diff関数の使い方について解説しました。
この記事の内容をまとめます。

・`array_diff(array $array1, array …$arrays): array`で複数の配列の差を計算する。
・`$array1`は比較元の配列。
・`$arrays`は比較対象の配列(複数指定可能)。
・最初の配列に存在し、他の配列には存在しない要素を含む配列を返す。
・複数の配列の差分を簡単に取得する場合に便利。
PHP

コメント