【PHP8.x】array_udiff_assoc関数の使い方
作成日: 更新日:
array_udiff_assoc関数は、複数の配列を比較し、最初の配列にのみ存在する要素を、ユーザーが定義した比較ルールに基づいて抽出する関数です。この関数は、配列の要素を比較する際に、値だけでなく、その要素に対応するキーも比較の対象とします。具体的には、引数として渡された複数の配列を順番に比較し、最初の配列に存在する要素のうち、残りのどの配列にもキーと値の両方が一致する要素がないものを探します。値の比較は、ユーザーが第三引数として指定するコールバック関数によって行われます。このコールバック関数は、比較対象の二つの値を引数として受け取り、それらが等しいと判断すれば0を、そうでない場合は負または正の整数を返さなければなりません。これにより、通常の厳密な比較では対応できない、例えば大文字・小文字を区別しない文字列比較のような、独自の比較ロジックを適用することができます。最終的に、他の配列には存在しないキーと値のペアだけを集めた新しい配列が戻り値として返されますので、柔軟な条件で配列の差分を調べたい場合に非常に有効です。
基本的な使い方
構文(syntax)
<?php
$array1 = [];
$array2 = [];
$array3 = []; // 必要に応じて複数の配列を追加可能
$valueComparisonCallback = function (mixed $valueA, mixed $valueB): int {
// ここに値の比較ロジックを実装します
// $valueA が $valueB より小さい場合は負の整数を返します
// $valueA が $valueB と等しい場合は 0 を返します
// $valueA が $valueB より大きい場合は正の整数を返します
return $valueA <=> $valueB; // 例: PHP 7.0 以降の宇宙船演算子
};
$diffResult = array_udiff_assoc($array1, $array2, $array3, $valueComparisonCallback);
引数(parameters)
array $array1, array $array2, array ...$arrays, callable $value_compare_func
PHP:
- array $array1: 比較対象となる最初の配列
- array $array2: 比較対象となる2番目の配列
- array ...$arrays: 比較対象となる追加の配列 (省略可能)
- callable $value_compare_func: 配列の値を比較するためのコールバック関数
戻り値(return)
array
指定されたコールバック関数を用いて、要素とキーを比較し、差分のある要素を抽出した新しい配列を返します。