【PHP8.x】array_uintersect関数の使い方

作成日: 更新日:

array_uintersect関数は、複数の配列の共通する要素を、ユーザーが定義した比較関数を使って抽出する関数です。この関数は、単に値が厳密に等しい要素だけでなく、プログラマが指定した独自のロジック(例えば、オブジェクトの特定のプロパティやカスタムデータ構造の比較基準など)に基づいて共通部分を判断したい場合に非常に有用です。

具体的には、第一引数には比較の基準となる最初の配列を指定し、その後ろには一つ以上の比較対象となる配列を続けます。そして、最後の引数として、2つの要素を比較してその順序関係を示す整数を返すコールバック関数を渡します。このコールバック関数は、比較対象の最初の要素が2番目の要素より小さい場合は負の数、等しい場合はゼロ、大きい場合は正の数を返さなければなりません。

array_uintersect関数は、最初の配列の各要素を取り出し、それが他のすべての引数として渡された配列のそれぞれに、ユーザー定義の比較関数によって「等しい」(コールバック関数がゼロを返す)と判断される要素が存在する場合に、その最初の配列の要素を結果の配列に含めます。結果として返される配列のキーは、最初の配列のキーがそのまま保持されます。この柔軟な比較機能により、オブジェクトの特定のプロパティや複雑なデータ構造に基づいて、複数の配列から共通のデータを効率的に見つけ出すことが可能になります。

基本的な使い方

構文(syntax)

<?php

function compare_strings($a, $b) {
    return strcmp($a, $b);
}

$array1 = ["a" => "apple", "b" => "banana", "c" => "cherry"];
$array2 = ["a" => "orange", "b" => "banana", "d" => "cherry"];
$array3 = ["e" => "grape", "f" => "banana", "g" => "kiwi", "h" => "cherry"];

$intersected_array = array_uintersect($array1, $array2, $array3, "compare_strings");

print_r($intersected_array);

?>

引数(parameters)

array $array1, array $array2, array ...$arrays, callable $value_compare_func

  • array $array1: 比較対象となる配列の1つ目
  • array $array2: 比較対象となる配列の2つ目
  • array ...$arrays: 比較対象となる追加の配列
  • callable $value_compare_func: 配列の要素の値を比較するためのコールバック関数

戻り値(return)

array

callback関数によって比較された結果、両方の配列に共通して存在する要素のみで構成された新しい配列を返します。

【PHP8.x】array_uintersect関数の使い方 | いっしー@Webエンジニア